Java面试题之Mybayis

一.Mybatis中的#和$区别

        #相当于对数据加上双引号,$相当于直接显示数据

        1.#将传入的数据都当成一个字符串,会对自动传入的数据加加一个双引号,如:order by #user_id#  如果传入的值是111.那么解析成sql时的值为 order by "111"  如果传入的值是id ,则解析成为sql为 order by "id".

        2。$将传入的数据直接显示生成在sql中,如:order by $user_id$ 如果我们传入的值是111,那么解析成sql时的值为order by  user_id 如果传入的值是id 则解析成order by  id 

 3.#方式能够很大程度防止sql注入

4.$方式无法防止sql注入

5.$方式一般用于传入数据库对象,例如传入表名

   6.一般能用#的就别用$,


   二。Mybatis的编程步骤是什么样的?

            1.创建SqlSessinFactory

            2.通过SqlSessionFactory创建SqlSession

            3.通过sqlsession执行数据库操作

            4。调用sessin.commit提交事务,

            5.调用sessio.close关闭会话

三。JDBC编程有哪些不足,MyBatis是如何解决这些问题

        1.数据库连接创建,释放频繁造成系统资源的浪费从而影响系统性能,如果使用数据库连接池可以解决此问题。

            解决:在SqlMapConifg.xml中配置数据连接池,使用连接池管理数据连接

    2.向Sql语句写在代码中代码不易维护,实际应用sql变化的可能比较大,sql变动需要改变java代码。

            解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。

    3.向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应,

            解决:Mybatis自动将java对象映射至sql语句

   4.对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据记录封装pojo对象解析比较方便

         解决:MyBaits自动将sql执行结果映射至java对象

四。使用Mybatis的mapper接口调用时有哪些要求

        1.Mapper接口方法名和mapper.xml中定义的每个sql的id相同

        2.Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同

        3.Mapper 接口的方法的输出参中的数类型和mapper.xml中定义的每个sql的requestType的类型相同

       4.Mapper.xml文件中的namespace 既是mapper接口的类路径

五。Mybitis中的一级缓存与二级缓存

        1.一级缓冲:基于PrepetualCache的HashMap本地缓存,其存储作用于为Session 当Session flush或close之后,该Session中所有的Cache就将清空。

    2.二级缓存与一级缓存其机制相同,默认是采用PerPetualCache,HashMap存储,不同在于其存储作用域为Mapper,并且可自定义存储源

 如Ehcache,作用域为namespace是指failnamespace对应的配置文件中所有的select操作结果集缓存,这样不同线程之间就可以共用二级缓存,启动二级缓存在mapper配置文件中:<cache />

    二级缓存可以设置返回的缓存对象策略<cache readOnly="true"> 当readOnly=”true“时,表示二级缓存返回给所有调用者同一个缓存对象实例,调用者可以update获取缓存实例,但是这样可能会造成其他调用者出现数据不一致的情况, 当readOnly="false"时,返回给调用者的是二级缓存总缓存的拷贝对象,即不同调用者获取的时缓存对象不同的实例,这样调用者对各自的缓存对象的修改不会影响到其他的调用者,即是安全的,所以默认是readOnly="false";

3.对于缓存数据更新机制,当某一个作用域(一级缓存Session/二级缓存Namespace)的进行了CUD操作后,默认该作用域下所有select中的缓存将被clear。


六。MyBatis在insert插入操作时返回主键,ID

    数据库为MySql时:

                <insert id="insert" parameterType="com.test.User" keyProperty="userId"  useGenerateKeys=“true”>

            KeyProperty表示返回的id要保存到对象的属性中,“useGeneratedKeys”表示主键id为自增长模式,Mysql中做以上配置就OK了,

        数据库为Orcle时

                

    

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,422评论 0 4
  • 多和优秀的人聊天真的可以提升自己,所以我未来的那个你,可能你在寻找我的时候迷路了,但我很庆幸,因为现在的我还不...
    秦小米mili阅读 217评论 0 0
  • 今天是快乐的一天,虽然爸爸出差没有在家,清晨刚一起床就得到了闺女的祝福:祝妈妈生日快乐!闺女是第一个向我祝福的人,...
    爱与信阅读 136评论 0 0
  • 今天没有什么特别想说的。 有点喜欢的女孩,没有回我的微信。
    水馨文阅读 209评论 0 0