Mybatis包含一个强大的查询缓存特性,使用缓存可以使应用更快地获取数据,避免频繁的和数据库进行交互。
一级缓存
1.一级缓存也叫
应
用
缓
存
\color{red}应用缓存
应用缓存,Mybatis会默认启用一级缓存,如果想要关闭一级缓存可以在
s
e
l
e
c
t
\color{red}select
select标签上添加 flushCache=“true”
2.一级缓存存在于SqlSession的生命周期中,在同一个SqlSeesion中查询,Mybatis会把执行的方法和参数通过算法生成缓存的键值,将键值和查询结果存放于一个Map对象中,如果同一个SqlSession中执行的方法和参数完全一致,那么通过算法会生成相同的键,当Map缓存对象中已经存在该键值时,则会返回缓存中的对象;
注
意
:
任
何
的
I
N
S
E
R
T
、
U
P
D
A
T
E
、
D
E
L
E
T
E
操
作
都
会
清
空
一
级
缓
存
\color{red}注意:任何的INSERT、UPDATE、DELETE 操作都会清空一级缓存
注意:任何的INSERT、UPDATE、DELETE操作都会清空一级缓存
二级缓存
1.二级缓存存在于sqlSessionFactory的生命周期中,可以理解为跨sqlSession;缓存是以namespace为单位的,不同的namespace下的操作互相不影响
2.setting参数cachedEnabled,这个参数是二级缓存的全局开关,默认值是true,如果把这个参数设置为false,即使后面存在二级缓存的配置,也不会生效。
3.要开启二级缓存,你需要在sql映射文件中添加配置
