mybatis 面试题

mybatis 面试题1.Mybatis比IBatis比较大的几个改进是什么a.有接口绑定,包括注解绑定sql和xml绑定Sql,b.动态sql由原来的节点配置变成OGNL表达式,c.在一对一,一对多的时候引进了association,在一对多的时候引入了collection节点,不过都是在resultMap里面配置2.什么是MyBatis

大家好,又见面了,我是你们的朋友全栈君。

1.Mybatis比IBatis比较大的几个改进是什么
		a.有接口绑定,包括注解绑定sql和xml绑定Sql ,
		b.动态sql由原来的节点配置变成OGNL表达式,
		c. 在一对一,一对多的时候引进了association,在一对多的时候引入了collection
		   节点,不过都是在resultMap里面配置

2.什么是MyBatis的接口绑定,有什么好处
		接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,
		我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置.

3.接口绑定有几种实现方式,分别是怎么实现的?
		接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上
		@Select@Update等注解里面包含Sql语句来绑定,另外一种就是通过xml里面写SQL来绑定,
		在这种情况下,要指定xml映射文件里面的namespace必须为接口的全路径名.

4.什么情况下用注解绑定,什么情况下用xml绑定
		当Sql语句比较简单时候,用注解绑定,
		当SQL语句比较复杂时候,用xml绑定,一般用xml绑定的比较多

5.MyBatis实现一对一有几种方式?具体怎么操作的
		有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,
		通过在resultMap里面配置association节点配置一对一的类就可以完成;

		嵌套查询是先查一个表,根据这个表里面
		的结果的外键id,去再另外一个表里面查询数据,也是通过association配置,但另外一个表
		的查询通过select属性配置

6.MyBatis实现一对多有几种方式,怎么操作的
		有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次,通过在resultMap里面配
		置collection节点配置一对多的类就可以完成;
		
		嵌套查询是先查一个表,根据这个表里面的
		结果的外键id,去再另外一个表里面查询数据,也是通过配置collection,但另外一个表的
		查询通过select节点配置

7.MyBatis里面的动态Sql是怎么设定的?用什么语法?
		MyBatis里面的动态Sql一般是通过if节点来实现,通过OGNL语法来实现,但是如果要写的完
		整,必须配合where,trim节点,where节点是判断包含节点有内容就插入where,否则不插
		入,trim节点是用来判断如果动态语句是以and 或or开始,那么会自动把这个and或者or取
		掉 

8.IBatis和MyBatis在核心处理类分别叫什么
		IBatis里面的核心处理类交SqlMapClient,
		MyBatis里面的核心处理类叫做SqlSession 

9.IBatis和MyBatis在细节上的不同有哪些
		在sql里面变量命名有原来的#变量# 变成了#{变量}  
		原来的$变量$变成了${变量},
		原来在sql节点里面的class都换名字交type 
		原来的queryForObject queryForList 变成了selectOne selectList  
		原来的别名设置在映射文件里面放在了核心配置文件里

10.讲下MyBatis的缓存
		MyBatis的缓存分为一级缓存和二级缓存,
		一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是关闭的,
		使用二级缓存属性类需要实现Serializable序列化接
		口(可用来保存对象的状态),可在它的映射文件中配置<cache/>

11.MyBatis(IBatis)的好处是什么
		ibatis把sql语句从Java源程序中独立出来,
		放在单独的XML文件中编写,给程序的维护带来了很大便利。
		ibatis封装了底层JDBC API的调用细节,并能自动将结果集转换成Java Bean对象,
		大大简化了Java数据库编程的重复工作。
		
		因为Ibatis需要程序员自己去编写sql语句,
		程序员可以结合数据库自身的特点灵活控制sql语句,
		因此能够实现比hibernate等全自动orm框架更高的查询效率,能够完成复杂查询。.


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136707.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql数据库经典练习题

    mysql数据库经典练习题

    2021年10月3日
    51
  • DS3231高精度时钟,LCD1602显示,QXmini151版本「建议收藏」

    本设计的主要任务是计时和显示。设计任务的具体要求如下:计时:第一种是通过单片机内部的定时器/计数器来实现为软时钟。第二种是通过专用的硬件时钟芯片来实现为硬时钟。 显示:第一种是数码管显示,分为静态显示和动态显示,动态显示需要占用cpu大量时间来运行,不需要复杂的驱动程序,制作成本不高。第二种是LCD1602液晶显示,能显示出较多的信息并且数字清晰,应用广泛,但是不便于观察。总设计思路阐述1.时钟方案设计及选择:目前有DS3231、DS302、DS12C887三种时钟芯片。本次设计选择DS32

    2022年4月13日
    80
  • 数据结构(严蔚敏版)与算法的实现(含全部代码)

    数据结构(严蔚敏版)与算法的实现(含全部代码)目录基础c/c++代码优化及常见错误c语言位运算的妙用-程序优化c/c++进制转换方法汇总(含全部代码)二进制数-北邮2012研究生复试质因子分解除树和图外的数据结构可以使用STL:C++STL的使用数据结构线性表顺序表循环左移(2010联考真题)单链表单链表相邻结点逆置(2019北邮考研真…

    2022年6月28日
    25
  • DMA控制器8237A「建议收藏」

    DMA控制器8237A「建议收藏」1DMA系统简介DMA(directmemoryaccess)是一种外设与存储器或者存储器与存储器之间直接传输数据的方式,在进行DMA存取时,CPU让出总线控制权,不在采用输入输出指令的方法进行数据存取,而采用一个专门的硬件DMAC(DirectMemoryAccessControl)控制电路,减少了中间环节,从而提高了传输速率。1.1DMA基本原理DMA直接实现I/O与存储器之间的数据传送。①当I/O接口准备好,希望进行DMA操作时,就像DMAC发出DMA请求信号DRQ(DMARe

    2022年5月18日
    57
  • 杂项-黑苹果安装教程「建议收藏」

    杂项-黑苹果安装教程「建议收藏」说明黑苹果安装步骤笔记准备工作:一台电脑(预装Win10),一个8g及以上的U盘(10.15+版本的系统需要更大的U盘),一块硬盘或一个30g以上的分区,一双手,一个大脑。测试用例主要硬件机器:台式组装机主板:技嘉h110m-SCPU:3.19GHzIntelCorei5显卡:IntelHDGraphics530+NVIDIAGeForceGT730硬盘:GALAXTA1D0120A+西数机械盘500G网卡:RealtekRTL8168G/81

    2022年5月6日
    329
  • pycharm安装教程中文_java将对象转为json

    pycharm安装教程中文_java将对象转为json#1.下载安装包下载地址(http://www.jetbrains.com/pycharm/download/#section=windows)#2.安装#3.激活选择Activationcode在http://idea.lanyus.com/获取注册码修改hosts文件,加入以下字段0.0.0.0account.jetbrains.com#4.中文界面下载语言包https://github…

    2022年8月25日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号