mybatis一级二级缓存笔记

mybatis一级缓存默认开启

如何判定两次查询是完全相同的查询

  • StatementId 也就是函数名是否相同
  • 查询参数
  • 分页参数
  • SQL语句
  • 环境
    在这里插入图片描述

一级缓存的生命周期

mybatis一级缓存的生命周期是在数据库事务的生命周期之内的
一级缓存的产生
在这里插入图片描述

  • 执行查询函数时会开启缓存
  • 关闭session会清空缓存
  • commit提交也会清空缓存
  • rollback回滚也会清空缓存
  • 执行insert、update、delete操作之后缓存也会被清空,并且与操作的表无关
  • 通过SQLsession.clearCache()主动清空
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

类图

在这里插入图片描述

设计理念

在这里插入图片描述

一级缓存 当与spring进行集成时

在同一个事务内有效,spring未开启事务时每次查询后会关闭session,下次查询新开一个session
在同一个事务内有效,spring未开启事务时每次查询后会关闭session,下次查询新开一个session

二级缓存

开启方式

在这里插入图片描述
第三部需要把entity实现序列化接口才行

二级缓存相当于不同的session共同拥有一个缓存,一级缓存是只针对一个session
在这里插入图片描述

二级缓存命中原则

二级缓存命中原则和一级缓存的命中原则是一样的,同以上几点 ,在同一个SqlSessionFactory环境中有效
在这里插入图片描述

二级缓存的生命周期

二级缓存的产生,在满足一级缓存的条件下执行了close或者commit
特别注意rollback无法产生二级缓存

在这里插入图片描述
一级和二级缓存联合作用过程原理图
在这里插入图片描述
缓存的销毁
在这里插入图片描述
在同一个mapper域中进行更新操作会清空二级缓存,进行rollback和clearCache操作不会对缓存有任何影响。
创建过程
在这里插入图片描述
在这里插入图片描述

刷新刷入缓存

二级缓存的清楚策略

在这里插入图片描述
最大引用数目
在这里插入图片描述

缓存的对比

在这里插入图片描述

使用建议

在这里插入图片描述
所以是学了个寂寞,一般都是和spring继承,一级缓存生命周期很短,没什么卵用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值