Mybatis二级缓存失效及二级缓存使用简介

1.Mybatis二级缓存使用简介:

        1.1:开启全局二级缓存配置:<setting name="cacheEnabled" value="true"></setting> 

        1.2:在对应的xxxmapper.xml文件加入<cache/>标签

  注意:二级缓存是基于命名空间namespace的,一级缓存是基于sqlSession的,也就是与数据库之间的一次会话。

                1.2.1:cache的相关属性介绍:

                     eviction: 缓存的回收策略

                                 LRU(默认):最近最少使用,移除最长时间不被使用的对象

                                 FIFO:先进先出,安对象进入缓存的顺序来移除它们

                                 SOFT:软引用,移除基于垃圾回收器的状态和软引用规则的对象

                                 WEAK: 弱引用,更积极的移除基于垃圾收集器状态和弱引用规则的对象

                    flushInterval:缓存刷新间隔 缓存多长时间清空一次,默认不清空,设置一个毫秒值

                    readOnly:是否只读 。

                                        true:只读,mybatis认为所有从缓存中获取数据的操作都是只读操作,不会修改数据。 mybatis为了加快获取速度,直接会将数据在缓存中的引用交给用户,不                                                      安全,但速度快。

                                         false:非只读,mybatis觉得获取的数据可能会被修改 mybatis会利用序列化&反序列化的技术克隆一份新的数据给你,安全,但速度慢。

                    size:缓存最多存放多少个引用。

                    type:指定自定义缓存的全类名,实现Mybatis提供的Cache接口即可。

      1.3:因为上面说到mybatis会用到序列化&反序列化技术克隆一份新的数据,所以对应的pojo需要实现序列化

        

 2.mybatis二级缓存失效的原因

        2.1:下面这篇博客个人觉得已经总结的很全面了,传送门:

                转载:https://www.cnblogs.com/DoubleEggs/p/6243223.html

        2.2:补充一个比较简单但有时候比较容易忽略的场景(亲身经历):

                 自己写了一个工具类,来获取sqlSession,但是每次获取sqlSession的时候,都会重新加载mybatis全局配置文件,创建一个新的sqlSessionFactory,sqlSessionFactory不同自然也会导致二级缓存失效:

                

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值