idea:Mybatis中的一级缓存与二级缓存

1.什么是缓存?

  1. 缓存就是我们查询的时候去历史记录里面寻找,找到了就不用执行查询语句去再一次接触数据库了
  2. 缓存是以namespace为单位的,不同的namespace下的操作互不影响,但刷新缓存是刷新整个namespace的缓存,相当于update;

2.Mybatis的缓存机制整体设计以及二级缓存的工作模式
在这里插入图片描述
(1)一级缓存:一级缓存,Mybatis已然为我们开启了,但是我们关闭不了,只能通过手动关闭,(sqlsession级别)

  1. 在同一个sqlsession中Mybatis会把执行的方法和参数生成算法来生成缓存的键值,将键值和结果放在一个Map中;
  2. 不同的sqlsession之间的缓存数据是相互隔离的
  3. 任何的update select delete语句都会清除缓存
  4. Executor执行操作时会去PerpetualCache中的HashMap中根据cacheKey查询缓存

(2) 二级缓存:二级缓存需要我们手动开启,(mapper级别)

  1. 如果用户配置了“cacheEnabled=true”,那么Executor对象会加上一个装饰者CachingExecutor,以增强Executor功能,使其具有缓存查询的功能,这时,sqlsession使用CachingExecutor来完成请求,CachingExecutor先判断在Application级别的二级缓存中是否由缓存结果,如果有查询结果,则直接返回,否则,交给真正的Executor对象来完成操作,且CachingExecutor会将Executor返回的结果放置到缓存中,然后返回给用户
    在这里插入图片描述

  2. 二级缓存存数据的地方:Configuration中

  3. 二级缓存的实现:Cache接口的装饰器

  4. 一级缓存与二级缓存的使用顺序: 二级缓存—>一级缓存—>数据库

3.开启二级缓存

  1. 配置全局变量参数:(总开关)
<settings>
        <!--开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    <
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值