缓存:
就是你查询之后的数据,不会立马销毁,放在内存当中,下次你还来的时候,就直接用这个号了。
一级缓存
- 与数据库同一次会话期间查询到的数据会放在本地缓存中
- 以后如果需要获取相同的数据,直接从缓存中拿,就没必要再去查了
同一个SqlSession
所以这两个查询,只用查询了一次
但是中间经过了一次修改,一级缓存就失效了。
二级缓存
又名:全局缓存
<settings> <setting name="cacheEnable" value="true"/> </settings>
开启了全局缓存之后
- 二级缓存也叫作全局缓存,一级缓存作用域太低
- 基于namespace级别的缓存,一个名称空间,对应一个二级缓存
- 工作机制:
- 一个会话查询查询一条数据,这个数据就会被放在当前会话的一级缓存中;
- 如果当前会话关闭了,这个会话对应的一级缓存就没了;但是我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中;
- 新的会话查询信息,就可以从二级缓存中获取;
- 不同的mapper查出的数据会放在自己对应的缓存中;