MyBatis的一级缓存和二级缓存有什么区别?
1.在MyBatis中,一级缓存的作用域在同一个SqlSession中,默认开启。一级缓存本质是一个Map,将执行方法,参数和SQL语句存在key中,查询结果存在value中,若key相同直接从一级缓存里返回查询结果。执行UPDATE,INSERT,DELETE语句会清空一级缓存。
2.二级缓存的作用域在同一个SqlSessionFactory中,二级缓存的开启需要配置,以namespace为单位,适用于查询频率高的功能场景。二级缓存的清空策略有LRU,FIFO等。
MyBatis与原生JDBC相比的优势有哪些?
开发人员无需再手动创建Connection,PreparedStatement,遍历结果集,封装对象等操作。使用Mapper映射,简化了原生JDBC进行数据库操作时的步骤,只需要关注SQL本身。