mybatis开启二级缓存

1.修改配置文件mybatis-config.xml加入<setting name="cacheEnabled"value="true"/>,全局配置参数,需要时再设置


cacheEnabled 介绍

描述 : cacheEnabled

允许值: 对在此配置文件下的所有cache 进行全局性开/关设置。

默认值 (true/false): true 


2.在mapper.xml中开启二缓存,mapper.xml下的sql执行完成会存储到它的缓存区,如:


开启缓存后,第一次查询会执行sql,第二次及以后的查询都会从缓存中读取数据


注意:开启缓存的弊端是数据没有实时性,当数据库中的数据一旦修改,查询的数据还是缓存中的数据没有实时性,对于某些需要实时性显示数据的接口我们可以设置useCache="false",设置该属性后,该接口每次查询出来都是去执行sql查询出实时性数据。

相关配置说明:

①.设置useCache=false可以禁用当前select语句的二级缓存,即每次查询都会发出sql去查询,默认情况是true,即该sql使用二级缓存。

[html] view plain copy
  1. <select id="findOrderListResultMap" resultMap="ordersUserMap" useCache="false">  
总结:针对每次查询都需要最新的数据sql,要设置成useCache=false,禁用二级缓存。
②.清空缓存

[html] view plain copy
  1. <insert id="insertUser" parameterType="cn.itcast.mybatis.po.User" flushCache="true">  

总结:一般下执行完commit操作都需要刷新缓存,flushCache=true表示刷新缓存,这样可以避免数据库脏读。

注意:

(1)当为select语句时:

flushCache默认为false,表示任何时候语句被调用,都不会去清空本地缓存和二级缓存。

useCache默认为true,表示会将本条语句的结果进行二级缓存。

(2)当为insert、update、delete语句时:

flushCache默认为true,表示任何时候语句被调用,都会导致本地缓存和二级缓存被清空。

useCache属性在该情况下没有。

当为select语句的时候,如果没有去配置flushCache、useCache,那么默认是启用缓存的,所以,如果有必要,那么就需要人工修改配置

3.对应的pojo实现序列化(implements Serializable)

4.mybatis自身实现二级缓存弊端在于只能作用于数据库,此时需要我们引用第三方库作为缓存库,这样缓存更具有扩展性。。。(待续)

  • 10
    点赞
  • 49
    收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论 11

打赏作者

qq_35673617

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值