一级缓存
缓存介绍
MyBatis中使用缓存来提高其性能。
当查询数据时, 会先从缓存中取出数据,如果缓存中没有,再到数据库当中查询
MyBatis中的缓存分为两种:一级缓存和二级缓存
一级缓存是sqlSession级别的,二级缓存是mapper级别的
一级缓存
- 本地缓存 (默认开启)
- 在sqlSession没有关闭之前,再去查询时, 会从缓存当中取出数据,不会重新发送新的sql
一级缓存失效
- 如果在查询之前,执行了增\删\改 缓存就会失效
- 手动清空缓存
- 如果两次的查询条件不一样,缓存也会失效
- 如果两个查询在不同的sqlsession当中
二级缓存介绍
全局作用域缓存 一个namespace对应一个缓存
如果会话关闭,一级缓存的数据会被保存到二级缓存中
不同namespace查出的数据 ,会放到自己对应的缓存中
现在默认也是打开的
使用步骤:
- 1.确保在配置文件当中开启二级缓存
- 2.在对应的mapper中添加cache标签
- 3.POJO需要实现Serializable接口