mybatis 不生效 参数_[Mybatis][基础支持层]二级缓存支持

本文介绍了Mybatis的二级缓存,包括默认关闭状态、作用范围和开启配置。详细讲解了二级缓存的实现原理,如何在mapper.xml和Mapper.java中启用,并分析了二级缓存可能带来的线程安全和脏读问题,以及Mybatis如何通过TransactionalCache解决这些问题。最后,指出了二级缓存的不可重复读问题。
摘要由CSDN通过智能技术生成

aca4d4a5ed94da84b3900f68a6d18761.gif

该系列文章针对 Mybatis 3.5.1 版本

Mybatis 中针对缓存的使用,可以分为:一级缓存和二级缓存。

一、二级缓存

1.1、介绍

二级缓存在 Mybatis 中默认是不开启。准确的来讲应该是二级缓存的全局配置开关是默认开启的但是想要二级缓存生效,还需要进行配置。

二级缓存的作用范围是同一个 namespace 下的mapper 映射文件内容。

多个 SqlSession 之间可以共享缓存内容。

在 Mybatis 中,SQL 查询的发起与执行的逻辑处理可以划分为核心处理层,在核心处理层中,所有执行操作的起始都是 Executor 执行器。

执行器实现类图如下

eb24e8fd103cc564b64482a3f13f36fb.png

如图,所有 Executor 执行器的实现都继承了抽象父类 BaseExecutor ,同时 BaseExecutor 是一个模板抽象类,定义了 Executor 的执行结构。

针对一级缓存,一级缓存的实现在 BaseExecutor 中,所以所有的 Executor 都支持一级缓存,且一级缓存不存在开启关闭开关,只能通过两种方式来使得一级缓存失效

  • 通过一级缓存作用域,配置 STATEMENT ,使得每次缓存存储之后,主动清除

  • 通过 Mapper.xml 中配置 flushCache=true 属性,使得每次查询前都先清除缓存,达到缓存失效的目的。

1.2、开启二级缓存

二级缓存由执行器装饰器 CachingExecutor 实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值