前前言

一、什么是MyBatis?

答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。

二、讲下MyBatis的缓存

答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置

三、Mybatis是如何进行分页的?分页插件的原理是什么?

四、简述Mybatis的插件运行原理,以及如何编写一个插件?

五、Mybatis动态sql是做什么的?都有哪些动态sql?能简述一下动态sql的执行原理不?

六、#{}和${}的区别是什么?

七、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?

八、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

九、MyBatis与Hibernate有哪些不同?

十、MyBatis的好处是什么?

十一、简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?

答:Mybatis将所有Xml配置信息都封装到All-In-One重量级对象Configuration内部。在Xml映射文件中,<parameterMap>标签会被解析为ParameterMap对象,其每个子元素会被解析为ParameterMapping对象。<resultMap>标签会被解析为ResultMap对象,其每个子元素会被解析为ResultMapping对象。每一个<select>、<insert>、<update>、<delete>标签均会被解析为MappedStatement对象,标签内的sql会被解析为BoundSql对象。

十二、什么是MyBatis的接口绑定,有什么好处?

十三、接口绑定有几种实现方式,分别是怎么实现的?

十四、什么情况下用注解绑定,什么情况下用xml绑定?

十五、MyBatis实现一对一有几种方式?具体怎么操作的?

十六、Mybatis能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别?

十七、MyBatis里面的动态Sql是怎么设定的?用什么语法?

十八、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?

十九、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

二十、当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定pojo?

二十一、模糊查询like语句该怎么写?

二十二、通常一个Xml映射文件,都会写一个Dao接口与之对应, Dao的工作原理,是否可以重载?

二十三、Mybatis映射文件中,如果A标签通过include引用了B标签的内容,请问,B标签能否定义在A标签的后面,还是说必须定义在A标签的前面?

二十四、Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

二十五、Mybatis中如何执行批处理?

二十六、Mybatis都有哪些Executor执行器?它们之间的区别是什么?

二十七、Mybatis中如何指定使用哪一种Executor执行器?

二十八、Mybatis执行批量插入,能返回数据库主键列表吗?

二十九、Mybatis是否可以映射Enum枚举类?

三十、如何获取自动生成的(主)键值?

三十一、在mapper中如何传递多个参数?

三十二、resultType resultMap的区别?

三十三、使用MyBatis的mapper接口调用时有哪些要求?

三十四、Mybatis比IBatis比较大的几个改进是什么?

三十五、IBatis和MyBatis在核心处理类分别叫什么?

三十六、IBatis和MyBatis在细节上的不同有哪些?

关注公众号程序猿学社,回复关键字"面试",获取zk,dubbo,springboot,springcloud,mybatils,apollo等技术的面试题。

公众号:程序猿学社

每周实时更新

12-24 21:51
查看更多