MyBatis:二级缓存

基本知识:

分类:

  1. 内置二级缓存(其主要任务是映射)

  2. 外置第三方产品

内置二级缓存:

开启方法:

  1. 在映射文件中添加<cache/>标签

  2. 操作的实体类实现serializabel接口

MyBatis:二级缓存

映射文件

MyBatis:二级缓存

实现接口

底层工作原理:二级缓存底层也是map,key(hashCode+StatementId+

增删改对二级缓存的影响:会刷新二级缓存,但和一级不同的是将value置为null,并未删除整个Entry对象,即key仍旧保留

关闭一级缓存对二级缓存的影响:在增删改的statement中添加flushCache="false"

MyBatis:二级缓存

二级缓存的配置:

  • size:内置二级缓存可以存放多少个查询结果,默认1024

  • eviction:逐出策略

  • flushInterval:刷新二级缓存的时间间隔

MyBatis:二级缓存

使用原则:

  • 不要出现多个namespace操作一张表的情况

  • 对关联关系不要出现增删改操作

  • 当查询操作多于增删改操作时就可以使用二级缓存


EHCache二级缓存:

开启方式:

下载并导入jar包(mybatis-ehcache-1.0.3.jar和ehcache-core-2.6.8.jar)

在映射文件中添加<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>

MyBatis:二级缓存

导包

MyBatis:二级缓存

映射文件

关闭方式:

  • 局部性关闭:在<select>中添加useCache="false"

  • 全局性关闭:在主配置文件中添加 <setting name="cacheEnabled" value="false"/>

MyBatis:二级缓存

局部性关闭

MyBatis:二级缓存

全局性关闭

配置:

步骤在jar包里找到ehcache-failsafe.xml,并更名为ehcache.xml,导入src下的包中即可。

方法一:直接修改:

MyBatis:二级缓存

方法二:在映射文件中配置:(但只是基于该namespace)【若该设置与ehcache.xml冲突会以该设置为准】

MyBatis:二级缓存