Mybatis缓存

作者: GavinZZW | 来源:发表于2021-03-14 22:30 被阅读0次

三点:一级缓存,二级缓存,redis缓存(分布式系统一般使用这个)

1.一级缓存

image.png image.png

一级缓存 localcache:sqlsession级别

2. 二级缓存

image.png

二级缓存的开启:

配置中

!--开启⼆级缓存-->
<settings>
 <setting name="cacheEnabled" value="true"/>
 </settings>

mapper.xml中

<!--开启⼆级缓存-->
<cache></cache>

对单个方法useCacheflushCache

<select id="selectUserByUserId" useCache="false"
resultType="com.lagou.pojo.User" parameterType="int">
 select * from user where id=#{id}
</select>

mybatis中还可以配置userCache和flushCache等配置项,userCache是⽤来设置是否禁⽤⼆级缓 存

的,在statement中设置useCache=false可以禁⽤当前select语句的⼆级缓存,即每次查询都会发出 sql

去查询,默认情况是true,即该sql使⽤⼆级缓存

<select id="selectUserByUserId" flushCache="true" useCache="false"
resultType="com.lagou.pojo.User" parameterType="int">
 select * from user where id=#{id}
</select>

设置statement配置中的flushCache="true”属性,默认情况下为true,即刷新缓存,如果改成false则 不

会刷新。使⽤缓存时如果⼿动修改数据库表中的查询数据会出现脏读。

二级缓存:mapper和namespace级别

sqlsession 调用close或commit时才会放到缓存中,否则只会放入

3.redis缓存(适合分布式系统中的缓存)

image.png

使用

<cache type="org.mybatis.caches.redis.RedisCache" />
或
@CacheNamespace(implementation = RedisCache.class)//开启二级缓存

注意信息

查询顺序:查询->二级缓存->一级缓存->数据库

开启二级缓存后,executor走CachingExecutor实现

相关文章

网友评论

    本文标题:Mybatis缓存

    本文链接:https://www.haomeiwen.com/subject/itaccltx.html