- 使用mybatis二级缓存
1.1在mybatis.xml文件中增加
<settings>
<!-- 全局映射器启用缓存,不建议使用mybatis自己的缓存,cacheEnabled默认为True-->
<setting name="cacheEnabled" value="true" />
</settings>
1.2 maper.xml文件中新增一行<cache/>
1.3 运行结果
具体可以看org.apache.ibatis.executor.CachingExecutor类的以下实现
1.4
第一次查询
第二次查询, 直接从缓存中查询
1.5 mybatis count 缓存逻辑
1.6 缓存策略
设置 cache 标签的属性
cache 标签有多个属性,一起来看一些这些属性分别代表什么意义
eviction
: 缓存回收策略,有这几种回收策略- LRU - 最近最少回收,移除最长时间不被使用的对象
- FIFO - 先进先出,按照缓存进入的顺序来移除它们
- SOFT - 软引用,移除基于垃圾回收器状态和软引用规则的对象
- WEAK - 弱引用,更积极的移除基于垃圾收集器和弱引用规则的对象
默认是 LRU 最近最少回收策略
flushinterval
缓存刷新间隔,缓存多长时间刷新一次,默认不清空,设置一个毫秒值readOnly
: 是否只读;true 只读,MyBatis 认为所有从缓存中获取数据的操作都是只读操作,不会修改数据。MyBatis 为了加快获取数据,直接就会将数据在缓存中的引用交给用户。不安全,速度快。读写(默认):MyBatis 觉得数据可能会被修改size
: 缓存存放多少个元素type
: 指定自定义缓存的全类名(实现Cache 接口即可)blocking
: 若缓存中找不到对应的key,是否会一直blocking,直到有对应的数据进入缓存。