前前言
一、什么是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等技术的面试题。
公众号:程序猿学社
每周实时更新