标签:hashmap 增删改 map net 二级缓存 收集 一个 作用域 顺序
mybatis默认开启一级缓存。开启二级缓存也很简单,只需要将POJO实现 Serializable 接口,并在映射文件以及mybatis配置文件开启二级缓存即可。
1、一级缓存的作用域是SqlSession范围,当在同一个sqlSession两次调用同一个Mapper方法时,第一次执行完毕会将数据库中查询的结果写到缓存(内存,即sqlSession中的一个HashMap),如果SqlSession执行了增删改操作并且提交到数据库,MyBatis则会清空SqlSession中的一级缓存。
2、二级缓存是mapper级别的缓存,其作用域是mapper的同一个namespace(Dao接口)。不同的SqlSession两次执行相同的namespace下的sql语句,且向sql中传递的参数也相同,即最终执行相同的sql语句,则第一次执行完毕会将数据库中查询的数据写到缓存。
3、二级缓存默认使用LRU置换策略,要另外配置去mybatis配置文件配置eviction参数即可,具体其他策略:
参考:缓存实现源码分析
标签:hashmap 增删改 map net 二级缓存 收集 一个 作用域 顺序
原文地址:https://www.cnblogs.com/LinsenLi/p/10515651.html