Mybatis 的一二级缓存原理

本文详细解析了Mybatis的一级缓存,它是基于SqlSession级别的缓存,以及二级缓存,它是基于Mapper的基本缓存机制。通过学习,你可以了解这两个缓存在Mybatis中的工作原理和使用场景。
摘要由CSDN通过智能技术生成

Mybatis 的一级缓存原理(sqlsession 级别

第一次发出一个查询 sql,sql 查询结果写入 sqlsession 的一级缓存中,缓存使用的数据结构是一
个 map。
key:MapperID+offset+limit+Sql+所有的入参
value:用户信息
同一个 sqlsession 再次发出相同的 sql,就从缓存中取出数据 。如果两次中间出现 commit 操作
(修改、添加、删除),本 sqlsession 中的一级缓存区域全部清空,下次再去缓存中查询不到所
以要从数据库查询, 从数据库查询到再写入缓存。

 二级缓存原理(mapper 基本

二级缓存的范围是 mapper 级别(mapper 同一个命名空间),mapper 以命名空间为单位创建缓
存数据结构,结构是 map。mybatis 的二级缓存是通过 CacheExecutor 实现的。
其实是 Executor 的代理对象。所有的查询操作,在 CacheExecutor 中都会先匹配缓存中是否存
在,不存在则查询数据库。
key:MapperID+offset+limit+Sql+所有的入参
      具体使用需要配置:
      1. Mybatis 全局配置中启用二级缓存配置
      2. 在对应的 Mapper.xml 中配置 cache 节点
      3. 在对应的 select 查询节点中添加 useCache=true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值