大家好,又见面了,我是你们的朋友全栈君。
Mybatis二级缓存
开启二级缓存(xml方式):在*Mapper.xml中加入如下代码
<!--eviction: 清空缓存的策略
readOnly: 是否只读
flushInterval: 每个60秒刷新一次缓存
size: 内存大小,最多存储结果对象或者列表的512个引用 -->
<cache readOnly="true" eviction="FIFO" flushInterval="60000" size="512"/>
缓存清除策略
LRU
– 最近最少使用:移除最长时间不被使用的对象。FIFO
– 先进先出:按对象进入缓存的顺序来移除它们。SOFT
– 软引用:基于垃圾回收器状态和软引用规则移除对象。WEAK
– 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。两种方式二选一,如果都配置会报错:Caches collection already contains value for com.lixianhe.dao.UserMapper
注意:使用Mybatis二级缓存必须是xml写SQL语句,不能使用注解写SQL语句
缓存的执行顺序
在开启二级缓存的情况下执行一条sql
select colA1, colA2, colB1, colB2
from A, B
where ...
A表第二次就查询出了脏数据(B表的数据就是脏数据),这个问题对二级缓存来说是一个无解的问题
因此Mybatis二级缓存的使用用一个前提,必须保证所有的增删改查都在同一个namespace下才行
由于二级缓存的弊端,所以并不建议在实际生产中使用,而是在外部实现自己的缓存,如使用Redis做缓存
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/191279.html原文链接:https://javaforall.cn