mybatis的一级缓存与二级缓存
2024-09-01 12:47:16
一级缓存
Mybatis一级缓存的作用域是同一个SqlSession,在同一个sqlSession中两次执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。当一个sqlSession结束后该sqlSession中的一级缓存也就不存在了。Mybatis默认开启一级缓存。
简单说
session级别的缓存
当用户对同一个session进行多次查询的时候,只会查询一次数据库
后面的查询直接返回缓存的数据
当提交事务结束session会把一级缓存中的数据清除
二级缓存
Mybatis二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。Mybatis默认没有开启二级缓存需要在setting全局参数中配置开启二级缓存。
工作原理就是当开启了二级缓存,mybatis会把一级缓存的数据序列化至磁盘中
当开始一个新的session再次查询时会尝试从二级缓存中查询是否有数据,
有就直接返回缓存中的数据。
开启二级缓存
在MyBatis的配置文件启动
在需要开启二级缓存的表映射文件中增加 cache标签
使用二级缓存的实体类实现Serializable接口
最新文章
- CodeForces 261B Maxim and Restaurant 解法汇总
- Stored Procedure 里的 WITH RECOMPILE 到底是干麻的?
- 关于安装Visual Studio 2015 RC版卡主不动的解决方案
- SQL Server への接続を許可するファイアーウォール設定
- tinyxml安装和使用
- tee 命令基本使用方法、输出到多个文件
- maven和jdk版本不匹配
- 第二个sprint第一天
- 重装win7系统的方法
- iOS开发 .framework的Optional(弱引用)和Required(强引用)区别
- 归并排序的C语言实现
- 【HDOJ】1042 N!
- E. Three States - Codeforces Round #327 (Div. 2) 590C States(广搜)
- 解析嵌套json字符串,一个json字符串中嵌套另一个json字符串
- linux修改文本模式下的分辨率(CentOS6.4)
- iOS应用程序内存查看工具
- 没有文件扩展“.js”的脚本引擎问题解决
- nginx+多个tomcat
- Tars 服务调服务
- nth-of-type(n)
热门文章
- 10-cmake语法-CMakeParseArguments
- Windbg Watch(监视)窗口的使用
- pychram-redis破解
- cf1179D
- 蒟蒻所见之DP
- CF1174E Ehab and the Expected GCD Problem(DP,数论)
- 【BigData】Java基础_创建一个订单类
- Servlet 下载文件及支持中文文件名
- Centos 6.X查看和设置时间时区
- 日志篇 貌似win10有个磁盘bug,非常非常严重... 硬盘解密之后无法访问,参数错误 BitLocker解密