Mybatis中的缓存分为一级和二级缓存,二级缓存比一级缓存的作用范围大,一级缓存的作用范围是SqlSeesion对象,二级缓存是namespace
所以一般使用二级缓存
二级缓存的使用方法
在mapper文件中,进行配置,如下
<!-- 下面这一句话配置在mapper标签下 -->
<cache eviction="LRU" flushInterval="600000" size="512" readOnly="true"/>
eviction表示的清空缓存的策略,默认使用LRU,R代表recently
flushInterval表示的是清空缓存的时间,单位是毫秒
size表示的是缓存空间的大小,保存对象的数量,不推荐缓存集合对象
readOnly如果设置为true,每一次从缓存中取出的对象就是缓存对象本身,如果设置为false,那么每一次取出的对象就是缓存对象的副本,大多数情况设置为true
在每一个select标签中可以设置一个useCache属性,这样的话,如果你想要这个标签使用缓存,那么就可以将这个属性设置为true,不想要使用缓存的话,那就设置为false
flushCache表示执行完一条sql语句之后,立马清空缓存,一般放在select和insert标签中,作为属性的形式进行设置