MyBatis一级缓存失效的几种情况

文章目录

  • MyBatis一级缓存失效的几种情况
    • 1 MyBatis一级缓存概述
    • 2 四种失效的基本情况
    • 3 几种特殊情况

1 MyBatis一级缓存概述

  • MyBatis 的一级缓存是 SqlSession 级别的,通过同一个 SqlSession 对象查询的数据会被缓存,下次再查询相同的数据时,就会从缓存中直接获取,不会从数据库重新访问;
  • 一般我们说到 MyBatis 的一级缓存时,都是针对查询操作而言的;
  • MyBatis 的一级缓存是默认开启的。

2 四种失效的基本情况

  1. 不同的 SqlSession 对象对应不同的一级缓存,即使查询相同的数据,也要重新访问数据库;
  2. 同一个 SqlSession 对象,但是查询的条件不同
  3. 同一个 SqlSession 对象两次查询期间执行了任何的“增删改”操作,无论这些“增删改”操作是否影响到了缓存的数据;
  4. 同一个 SqlSession 对象两次查询期间手动清空了缓存(调用了 SqlSession 对象的 clearCache() 方法)。

3 几种特殊情况

  1. 如果在同一个 SqlSession 对象两次查询同一数据期间,我们使用另一个 SqlSession 对象修改了这个数据,那么这两次查询返回的结果依旧是相同的(说明 SqlSession 对象还是从一级缓存中获取了数据),即使数据已经发生了变化;
  2. 同理第一种情况,如果在同一个 SqlSession 对象两次查询同一数据期间,我们使用 Navicat、Mysql Workbench 等数据库管理工具修改了这一数据,那么这两次查询返回的结果依旧是相同的,即使数据已经发生了变化;
  3. 如果在同一个 SqlSession 对象两次查询同一数据期间,我们使用该对象“增删改”了与该数据无关的其它数据,并没有进行任何涉及该数据的操作,数据也没有发生变化,那么 MyBatis 的一级缓存依旧会失效,这延伸自 2 中的第 3 种情况;
  4. 如果在同一个 SqlSession 对象两次查询同一数据期间,我们又多次查询了其它数据(期间没有进行任何的“增删改”操作),那么数据库中的该数据没有发生变化,MyBatis 也会顺利从一级缓存中获取到该数据。

MyBatis一级缓存失效的几种情况相关推荐

  1. [mybatis]缓存_一级缓存_一级缓存失效的四种情况

    1.sqlSession不同 @Testpublic void test05() throws IOException {SqlSessionFactory sqlSessionFactory = g ...

  2. mybaits二十二:一级缓存失效的几种情况

    /*      *缓存      *  一级缓存(本地缓存),sqlSession级别的缓存,一级缓存是一直开启的.      *      与数据库同一次会话期间查询到的数据会放在本地缓存中.    ...

  3. 浅谈MyBatis一级缓存

    一.什么是一级缓存 每一次在和数据库进行会话的过程中,MyBatis 都会创建一个SqlSession对象.同一次会话期间,只要是查询过的数据,都会保存在当前SqlSession对象的一个Map中.所 ...

  4. Mybatis 一级缓存,Mybatis 二级缓存,Mybatis 缓存失效

    Mybatis 一级缓存,Mybatis 二级缓存,Mybatis 缓存失效 ================================ ©Copyright 蕃薯耀 2021-06-24 ht ...

  5. 深入理解MyBatis一级缓存和二级缓存【超详细源码解析】

    视频地址:https://www.bilibili.com/video/BV1nP411A7Gu MyBatis的缓存是一个常见的面试题 一级缓存的作用域为何是 sqlSession.二级缓存的作用域 ...

  6. Mybatis一级缓存和二级缓存 Redis缓存

    一级缓存 Mybatis的一级缓存存放在SqlSession的生命周期,在同一个SqlSession中查询时,Mybatis会把执行的方法和参数通过算法生成缓存的键值,将键值和查询结果存入一个Map对 ...

  7. Spring整合MyBatis导致一级缓存失效问题

    熟悉MyBatis的小伙伴都知道MyBatis默认开启一级缓存,当我们执行一条查询语句后,MyBatis会以我们查询的信息生成一个缓存key,查询的结果为value,存到一个map中,即存入一级缓存. ...

  8. MyBatis一级缓存及失效

    MyBatis提供了查询缓存机制,对于大量重复的查询使用缓存可以减轻数据库压力. 官网介绍 MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制. 为了使它更加强大而且易于配 ...

  9. Mybatis一级缓存、二级缓存

    一级缓存:SqlSession mybatis一级缓存是指在内存中开辟一块区域,用来保存用户对数据库的操作信息(sql)和数据库返回的数据,如果下一次用户再执行相同的请求,那么直接从内存中读数数据而不 ...

最新文章

  1. Jmeter工具中参数化、正则表达式提取器、响应断言的实现
  2. linux 命令行编辑常用快捷键
  3. HDL输入设计详解攻略
  4. 【硬件】集线器,交换机,路由器
  5. 存储类型auto,static,extern,register的区别
  6. 叉积 微分 恒等式_考研真题分章解析 | 第二章 导数与微分
  7. 计算机中级职称报考入口,2020年9月计算机职称考试报名流程(附入口)
  8. 2017-2018-2 1723《程序设计与数据结构》每周成绩 (更新完毕)
  9. JAVA加密C++解密简单方法
  10. Java——数据结构与算法
  11. 孪生网络keras实现minist
  12. 【每周一本书】之《解码者:艾伦·图灵传》:解码计算机之父、人工智能奠基者的谜样人生
  13. python,用pycharm写的评分系统
  14. 单片机多功能电子琴课设_基于单片机的简易电子琴课程设计.doc
  15. 奶制品生产与销售matlab,奶制品的生产与加工
  16. 视频收集、视频征集、视频采集、征集视频、收集视频、采集视频工具/小程序
  17. 管理者和企业如何做好员工管理?
  18. STM32物联网项目-ADC采集实验板板温度(NTC热敏电阻)
  19. 安卓Android/微信小程序的驾校考试预约管理系统APP
  20. 【STK入门01】插入STK对象

热门文章

  1. Android中移动View(ViewGroup)方法探究
  2. 冒泡排序 PTA 7-5 英文单词排序
  3. Sedona NetFusion SDN软件升级指出更多网络分析和报告功能
  4. webots建立四连杆机构模型
  5. 134_容器_git工具_Google_guava与Apache_commons的准备工作(jar src doc)
  6. 【CentOS】Not a valid JAR: /usr/local/src/hadoop
  7. linux文件所有权转移,管理Linux文件权限和所有权 (1)
  8. 市场调研-静脉注射(IV)瓶市场现状及未来发展趋势
  9. minecraft java_Minecraft Java版 1.13发布
  10. ipa文件反编译_手把手教你反编译别人的app