基于针对Mybatis缓存的学习笔记,以供拾遗。
Mybatis的缓存分为一级缓存和二级缓存。一级缓存基于SqlSession实现,默认开启且不能关闭,只能调整级别。
二级缓存基于Mapper实现,本次学习主要关注二级缓存。
Mybatis的缓存基于JVM堆内存实现,所有的缓存数据存放于Java对象中。
开启Mybatis缓存的步骤:
1) Mybatis主配置文件指定cacheEnabled属性为true
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
2) 在Mybatis Mapper配置文件中,配置缓存策略、缓存刷新频率、缓存容量等属性。(FIFO,先进先出)
<cache evication="FIFO" flushInterval="60000" size="512" readOnly="true"/>
3) 在配置Mapper时,通过useCache属性指定Mapper执行时是否使用缓存,flushCache属性指定执行Mapper执行后是否刷新缓存
<select id="listUsers" flushCache="false" useCache="true"
resultType="com.example.entity.UserEntity">
select * from user
</select>
执行查询操作后,查询结果会被保存在二级缓存中;执行更新操作后,二级缓存会被清空。