MyBatis一级缓存失效的几种情况
MyBatis一级缓存失效的几种情况
文章目录
- MyBatis一级缓存失效的几种情况
- 1 MyBatis一级缓存概述
- 2 四种失效的基本情况
- 3 几种特殊情况
1 MyBatis一级缓存概述
- MyBatis 的一级缓存是 SqlSession 级别的,通过同一个 SqlSession 对象查询的数据会被缓存,下次再查询相同的数据时,就会从缓存中直接获取,不会从数据库重新访问;
- 一般我们说到 MyBatis 的一级缓存时,都是针对查询操作而言的;
- MyBatis 的一级缓存是默认开启的。
2 四种失效的基本情况
- 不同的 SqlSession 对象对应不同的一级缓存,即使查询相同的数据,也要重新访问数据库;
- 同一个 SqlSession 对象,但是查询的条件不同;
- 同一个 SqlSession 对象两次查询期间执行了任何的“增删改”操作,无论这些“增删改”操作是否影响到了缓存的数据;
- 同一个 SqlSession 对象两次查询期间手动清空了缓存(调用了 SqlSession 对象的
clearCache()
方法)。
3 几种特殊情况
- 如果在同一个 SqlSession 对象两次查询同一数据期间,我们使用另一个 SqlSession 对象修改了这个数据,那么这两次查询返回的结果依旧是相同的(说明 SqlSession 对象还是从一级缓存中获取了数据),即使数据已经发生了变化;
- 同理第一种情况,如果在同一个 SqlSession 对象两次查询同一数据期间,我们使用 Navicat、Mysql Workbench 等数据库管理工具修改了这一数据,那么这两次查询返回的结果依旧是相同的,即使数据已经发生了变化;
- 如果在同一个 SqlSession 对象两次查询同一数据期间,我们使用该对象“增删改”了与该数据无关的其它数据,并没有进行任何涉及该数据的操作,数据也没有发生变化,那么 MyBatis 的一级缓存依旧会失效,这延伸自 2 中的第 3 种情况;
- 如果在同一个 SqlSession 对象两次查询同一数据期间,我们又多次查询了其它数据(期间没有进行任何的“增删改”操作),那么数据库中的该数据没有发生变化,MyBatis 也会顺利从一级缓存中获取到该数据。
MyBatis一级缓存失效的几种情况相关推荐
- [mybatis]缓存_一级缓存_一级缓存失效的四种情况
1.sqlSession不同 @Testpublic void test05() throws IOException {SqlSessionFactory sqlSessionFactory = g ...
- mybaits二十二:一级缓存失效的几种情况
/* *缓存 * 一级缓存(本地缓存),sqlSession级别的缓存,一级缓存是一直开启的. * 与数据库同一次会话期间查询到的数据会放在本地缓存中. ...
- 浅谈MyBatis一级缓存
一.什么是一级缓存 每一次在和数据库进行会话的过程中,MyBatis 都会创建一个SqlSession对象.同一次会话期间,只要是查询过的数据,都会保存在当前SqlSession对象的一个Map中.所 ...
- Mybatis 一级缓存,Mybatis 二级缓存,Mybatis 缓存失效
Mybatis 一级缓存,Mybatis 二级缓存,Mybatis 缓存失效 ================================ ©Copyright 蕃薯耀 2021-06-24 ht ...
- 深入理解MyBatis一级缓存和二级缓存【超详细源码解析】
视频地址:https://www.bilibili.com/video/BV1nP411A7Gu MyBatis的缓存是一个常见的面试题 一级缓存的作用域为何是 sqlSession.二级缓存的作用域 ...
- Mybatis一级缓存和二级缓存 Redis缓存
一级缓存 Mybatis的一级缓存存放在SqlSession的生命周期,在同一个SqlSession中查询时,Mybatis会把执行的方法和参数通过算法生成缓存的键值,将键值和查询结果存入一个Map对 ...
- Spring整合MyBatis导致一级缓存失效问题
熟悉MyBatis的小伙伴都知道MyBatis默认开启一级缓存,当我们执行一条查询语句后,MyBatis会以我们查询的信息生成一个缓存key,查询的结果为value,存到一个map中,即存入一级缓存. ...
- MyBatis一级缓存及失效
MyBatis提供了查询缓存机制,对于大量重复的查询使用缓存可以减轻数据库压力. 官网介绍 MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制. 为了使它更加强大而且易于配 ...
- Mybatis一级缓存、二级缓存
一级缓存:SqlSession mybatis一级缓存是指在内存中开辟一块区域,用来保存用户对数据库的操作信息(sql)和数据库返回的数据,如果下一次用户再执行相同的请求,那么直接从内存中读数数据而不 ...
最新文章
- Jmeter工具中参数化、正则表达式提取器、响应断言的实现
- linux 命令行编辑常用快捷键
- HDL输入设计详解攻略
- 【硬件】集线器,交换机,路由器
- 存储类型auto,static,extern,register的区别
- 叉积 微分 恒等式_考研真题分章解析 | 第二章 导数与微分
- 计算机中级职称报考入口,2020年9月计算机职称考试报名流程(附入口)
- 2017-2018-2 1723《程序设计与数据结构》每周成绩 (更新完毕)
- JAVA加密C++解密简单方法
- Java——数据结构与算法
- 孪生网络keras实现minist
- 【每周一本书】之《解码者:艾伦·图灵传》:解码计算机之父、人工智能奠基者的谜样人生
- python,用pycharm写的评分系统
- 单片机多功能电子琴课设_基于单片机的简易电子琴课程设计.doc
- 奶制品生产与销售matlab,奶制品的生产与加工
- 视频收集、视频征集、视频采集、征集视频、收集视频、采集视频工具/小程序
- 管理者和企业如何做好员工管理?
- STM32物联网项目-ADC采集实验板板温度(NTC热敏电阻)
- 安卓Android/微信小程序的驾校考试预约管理系统APP
- 【STK入门01】插入STK对象
热门文章
- Android中移动View(ViewGroup)方法探究
- 冒泡排序 PTA 7-5 英文单词排序
- Sedona NetFusion SDN软件升级指出更多网络分析和报告功能
- webots建立四连杆机构模型
- 134_容器_git工具_Google_guava与Apache_commons的准备工作(jar src doc)
- 【CentOS】Not a valid JAR: /usr/local/src/hadoop
- linux文件所有权转移,管理Linux文件权限和所有权 (1)
- 市场调研-静脉注射(IV)瓶市场现状及未来发展趋势
- minecraft java_Minecraft Java版 1.13发布
- ipa文件反编译_手把手教你反编译别人的app