- 谈谈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(可读/可写)的,意味着对象检索不是共享的,而且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改
- 一级缓存