mybatis的缓存可以减小数据库的压力
查询的顺序是:
- 先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以拿来直接使用。
- 如果二级缓存没有命中,再查询一级缓存
- 如果一级缓存也没有命中,则查询数据库
- SqlSession关闭之前,一级缓存中的数据会写入二级缓存
一级缓存
我们知道在默认条件下mybatis的一级缓存是开启的,localCacheScope=STATEMENT为关闭
可是通过查询,我们发现一级缓存竟然失效了
一级缓存失效条件
- 不是同一个SqlSession
- 同一个SqlSession但是查询条件发生了变化
- 同一个SqlSession两次查询期间执行了任何一次增删改操作
- 同一个SqlSession两次查询期间手动清空了缓存
- 同一个SqlSession两次查询期间提交了事务
查看打印信息,