版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82848386
MyBatis的二级缓存可以通过极少的配置项实现对数据库查询数据的缓存
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
规则
- 映射文件中所有的
<select/>
语句都会被缓存 - 映射文件中所有的
<insert/>
<update/>
<delete/>
语句都会刷新缓存 - 基于以上两点,需要被缓存的数据库表的所有操作都应该放在同一个Mapper文件中
在MyBatis的配置文件中添加以下配置
- 实际上即时不在配置文件中显式的声明该配置项,MyBatis的二级缓存也是默认开启的,因为该配置项的默认值就是true
<setting name="cacheEnabled" value="true" />
- 在需要进行缓存的Mapper文件中添加以下配置
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true" />
可选配置
- eviction 回收策略
- LRU [default] 移除最长时间不被使用的对象
- FIFO 按对象进入缓存的顺序进行移除
- SOFT 移除基于垃圾回收器状态和软引用规则的对象
- WEAK 更积极的移除基于垃圾回收器状态和弱引用规则的对象
- flushInterval 刷新间隔,毫秒
- 没有默认值,表明没有刷新间隔,缓存只有在调用刷新语句时刷新
- size 引用数目
- 1024 [default] 存储列表集合和对象的1024个引用
- readOnly 只读
- false [default] 可读写的缓存会返回缓存对象的拷贝,性能稍差,但安全性更高
- true 只读的缓存会给所有调用者返回缓存对象的相同实例,所以该对象无法被修改,性能更高
可选属性
- useCache 让单个
<select/>
语句自行选择是否被缓存 - flushCache 让单个
<select/>
语句自行选择是否被刷新缓存