怒肝一页,搞定这篇MyBatis 缓存结构(下)
二级缓存 主要内容: 二级缓存构建在一级缓存之上,在收到查询请求时,MyBatis 首先会查询二级缓存。若二级缓存未命中,再去查询一级缓存。与一级缓存不同,二级缓存和具体的命名空间绑定,一级缓存则是和 SqlSession 绑定。 在按照 MyBatis 规范使用 SqlSession 的情况下,一级缓存不存在并发问题。二级缓存则不然,二级缓存可在多个命名空间间共享。这种情况下,会存在并发问题,因此需要针对性去处理。除了并发问题,二级缓存还存在事务问题。 二级缓存如何开启? 配置项 <configuration> <settings> <setting name="cacheEnabled" value="true|false" /> </settings> </configuration> cacheEnabled=true表示二级缓存可用,但是要开启话,需要在Mapper.xml内配置。 <cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/> 或者 简单方式 <cache/> 对配置项属性说明: flushInterval="60000",间隔60秒清空缓存,这个间隔60秒,是被动触发的,而不是定时器轮询的。 size=512,表示队列最大512个长度,大于则移除队列最前面的元素