- 谈谈MyBits和JPA的区别
- ORM映射不同
- MyBatis是半自动,JPA是全自动
 
 - 可移植性不同
- MyBatis移植成本很高,因为要写SQL
 
 - 日志系统完整性不同
- JPA日志系统健全涉及广泛;MyBatis日志功能薄弱
 
 - SQL优化区别
- MyBatis优化方便很多
 
 
 - ORM映射不同
 - MyBatis输入输出支持的类型
- 简单类型
- 整数、小数、字符串
 
 - 集合类型
 - 自定义JavaBean
 
 - 简单类型
 - MyBatis如何实现一对多关联查询?
- 嵌套查询
- 通过select定义查询主表的SQL,返回结果通过resultMap映射
 
 - 嵌套结果
- 通过select标签定义关联查询主表和子表SQL
 
 
 - 嵌套查询
 - MyBatis中$和#有什么区别?(面试真题)
 - MyBatis的xml文件和Mapper是怎么绑定的(面试真题)
- 通过xml文件中
<mapper>标签的namespace,即接口的全限定名 
 - 通过xml文件中
 - MyBatis分页和自己写的分页哪个效率高?
- 自己写的效率高
- MyBatis分页是拦截查询SQL,在其基础上加limit
 
 
 - 自己写的效率高
 - 了解MyBatis缓存机制吗?
- 一级缓存
- 也叫本地缓存,默认启用且不能关闭
 - 同一个SqlSession查询时会通过算法生成缓存的键值,键入Map对象
 - 再产生同样的查询结果时会返回缓存的对象
 
 - 二级缓存
- 是SqlSessionFactory级别的缓存
 - 特点
- 映射语句文件中的所有SELECT 语句将会被缓存。
 - 映射语句文件中的所有时INSERT 、UPDATE 、DELETE 语句会刷新缓存。
 - 缓存会使用Least Rece ntly U sed ( LRU ,最近最少使用的)算法来收回。
 - 根据时间表(如no Flush Int erv al ,没有刷新间隔),缓存不会以任何时间顺序来刷新。
 - 缓存会存储集合或对象(无论查询方法返回什么类型的值)的1024 个引用。
 - 缓存会被视为read/write(可读/可写)的,意味着对象检索不是共享的,而且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改
 
 
 
 - 一级缓存
 
