有关于mybatis缓存笔记   摘抄于图灵学院鲁班大师笔记

  • 一级缓存:在同一次查询会话中如果出现相同的语句及参数,就会从缓存中取出不在走数据库查询。1级缓存只能作用于查询会话中 所以也叫做会话缓存。在同一次查询会话中如果出现相同的语句及参数,就会从缓存中取出不在走数据库查询。1级缓存只能作用于查询会话中 所以也叫做会话缓存。在 一级缓存默认开启,在同一个会话中执行增删改会清除一级缓存。
  • 一级缓存使用场景:订单表与会员表是存在一对多的关系 为了尽可能减少join 查询,进行了分阶段查询,即先查询出订单表,在根据member_id 字段查询出会员表,最后进行数据整合 。如果订单表中存在重复的member_id,就会出现很多没必要的重复查询。针对这种情况myBatis 通过1缓存来实现,在同一次查询会话中如果出现相同的语句及参数,就会从缓存中取出不在走数据库查询。1级缓存只能作用于查询会话中 所以也叫做会话缓存。
  • 一级缓存的使用条件:
  1. 必须是相同的SQL和参数
  2. 必须是相同的会话
  3. 必须是相同的namespace 即同一个mapper
  4. 必须是相同的statement 即同一个mapper 接口中的同一个方法
  5. 查询语句中间没有执行session.clearCache() 方法
  6. 查询语句中间没有执行 insert update delete 方法(无论变动记录是否与 缓存数据有无关系)

二级缓存:没啥卵用emmmm(一般项目中都不使用二级缓存,坑太多)

  • 二级缓存使用场景:业务系统中存在很多的静态数据如,字典表、菜单表、权限表等,这些数据的特性是不会轻易修改但又是查询的热点数据。一级缓存针对的是同一个会话当中相同SQL,并不适合这情热点数据的缓存场景。为了解决这个问题引入了二级缓存,它脱离于会话之外。

@CacheNamespace()

  • 属性说明:

@CacheNamespace(

implementation = PerpetualCache.class, //  缓存实现 Cache接口 实现类

eviction = LruCache.class,// 缓存算法

flushInterval = 60000, // 刷新间隔时间 毫秒

size = 1024,   // 最大缓存引用对象

readWrite = true, // 是否可写

blocking = false  // 是否阻塞

)

  • 2级缓存使用条件:
  1. 当会话提交或关闭之后才会填充二级缓存
  2. 必须是在同一个命名空间之下
  3. 必须是相同的statement 即同一个mapper 接口中的同一个方法
  4. 必须是相同的SQL语句和参数
  5. 如果readWrite=true ,实体对像必须实现Serializable 接口
  • 2级缓存清除条件:
  1. xml中配置的update 不能清空 @CacheNamespace 中的缓存数据
  2. 只有修改会话提交之后 才会执行清空操作
  3. 任何一种增删改操作 都会清空整个namespace 中的缓存

关于mybatis的一级缓存和二级缓存相关推荐

  1. Mybatis一级缓存,二级缓存的实现就是这么简单

    介绍 又到了一年面试季,所以打算写一点面试常问的东西,争取说的通俗易懂.面试高级岗,如果你说熟悉Mybatis,下面这些问题基本上都会问 Mybatis插件的实现原理? 如何写一个分页插件? Myba ...

  2. mybatis高级(3)_延迟加载_深度延迟_一级缓存_二级缓存

    设置延迟加载需要在mybatis.xml中设置 注: 侵入式延迟加载为真时是延迟加载 侵入式延迟加载为假时是深度延迟加载 <!-- 延迟加载和深度延迟加载 --><settings& ...

  3. MyBatis框架:延迟加载策策略、一级缓存、二级缓存

    MyBatis框架:延迟加载策略和缓存 Mybatis 延迟加载策略 1.1 何为延迟加载? 1.2 实现需求 1.3 使用association实现延迟加载 1.3.1 账户的持久层DAO接口 1. ...

  4. 浅谈Mybatis的一级缓存和二级缓存

    MyBatis的缓存机制 缓存的引入 当我们大量执行重复的查询SQL语句的时候,会频繁的和数据库进行通信,会增加查询时间等影响用户体验的问题,可以通过缓存,以降低网络流量,使网站加载速度更快. MyB ...

  5. MyBatis】MyBatis一级缓存和二级缓存

    转载自  MyBatis]MyBatis一级缓存和二级缓存 MyBatis自带的缓存有一级缓存和二级缓存 一级缓存 Mybatis的一级缓存是指Session缓存.一级缓存的作用域默认是一个SqlSe ...

  6. Mybatis 详解--- 一级缓存、二级缓存

    2019独角兽企业重金招聘Python工程师标准>>> Mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解: ①.一级缓存是SqlSession级别的缓存.在操作数据 ...

  7. Mybatis源码分析之(七)Mybatis一级缓存和二级缓存的实现

    文章目录 一级缓存 二级缓存 总结 对于一名程序员,缓存真的很重要,而且缓存真的是老生常谈的一个话题拉.因为它在我们的开发过程中真的是无处不在.今天LZ带大家来看一下.Mybatis是怎么实现一级缓存 ...

  8. 框架源码专题:Mybatis的一级缓存、二级缓存是什么?有什么作用?

    文章目录 1. Mybatis中缓存的作用 2. 一级缓存 3. 二级缓存 4. 一级缓存和二级缓存的区别 5. 通过代码观察Mybatis缓存工作的全过程 1. Mybatis中缓存的作用 首先缓存 ...

  9. MyBatis中的一级缓存和二级缓存介绍

    先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中,下次使用时不必从数据库查询,而是直接从缓存中读取,避免频繁操作数据库,减轻数据库的压力,同时提高系统性能. 一级缓存 一级 ...

  10. mybatis 详解------ 一级缓存、二级缓存(九)

    mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解: ①.一级缓存是SqlSession级别的缓存.在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMa ...

最新文章

  1. android 的命令行工具(dos命令)
  2. 概要设计说明书案例_逆向前行,趁势而为外贸学院线上教学优秀案例展(七)...
  3. 拜托,别再拿毒鸡汤祸害我们了,我们已经很苦很努力了
  4. kafka拉取mysql数据库_kafka里信息用flink获取后放入mysql
  5. sendrequest ajax数据返回,jquery ajax 还没有调用send()方法 返回的状态码XMLHttpRequest.status 是0 ,怎么解决?...
  6. java 19 - 5 Throwable的几个常见方法
  7. 模拟微信发红包算法java实现
  8. Windows 安装配置Java开发环境《jdk8》
  9. 李秋豪计算机系统,CS:APP3e 深入理解计算机系统_3e Y86-64模拟器指南
  10. linux系统的日历如何改,linux下实现农历的日历
  11. SEO实战密码:60天网站流量提高20倍(第2版)
  12. 优秀宝宝都有的6个特点
  13. python是低级语言吗_低级语言和高级语言的区别
  14. wireshark如何抓取本机包
  15. 植物大战僵尸修改游戏存档
  16. PAP认证和CHAP认证原理解析
  17. 2022 年前端技术发展趋势知识小结
  18. 做了5年软件测试,对游戏UI自动化测试的一些理解和认识
  19. 2020年元旦上海计算机类会议,CARC2020年元旦晚会
  20. Spring学习之旅(二) AOP(面向切面编程)的使用

热门文章

  1. 用URLOS一键安装laiketui电商门店系统 又快又方便
  2. FPGA远程固件在线升级
  3. QCC5124/QCC5125歌曲名多国语言字库OLED动态显示
  4. FPGA学习笔记3.2——用Verilog实现七段管计时器
  5. 2021年电工(初级)模拟考试及电工(初级)作业考试题库
  6. 习惯的力量之一习惯决定命运?
  7. 可解释性:对神经网络中层特征复杂度的解释与拆分丨ICML 2021
  8. js中json字符串解析
  9. python加密,实现字符串加密,生成唯一固定长度字符串
  10. iOS compare字符串的比较