Mybatis一级缓存和二级缓存
什么是一级缓存
在日常开发过程中,经常会有相同的sql执行多次查询的情况,mybatis提供了一级缓存来优化这些查询,避免多次请求数据库。
一级缓存在mybatis中默认是开启的并且是session级别,它的作用域为一次sqlSession会话。
什么是二级缓存
相对于一级缓存,二级缓存的作用域更广泛,它不止局限于一个sqlSession,可以在多个sqlSession之间共享,事实上,它的作用域是namespace。
mybatis的二级缓存默认也是开启的,但由于他的作用域是namespace,所以还需要在mapper.xml中开启才能生效* 缓存的优先级
通过mybatis发起的查询,作用顺序为:二级缓存->一级缓存->数据库 ,其中任何一个环节查到不为空的数据,都将直接返回结果
缓存失效
当在一个缓存作用域中发生了update、insert、delete 动作后,将会触发缓存失效,下一次查询将命中数据库,从而保证不会查到脏数据。
一级和二级都是默认开启的。只是二级还需要在Mapper.xml 再配置,不然不生效。
参考文章:
https://tech.meituan.com/2018/01/19/mybatis-cache.html
https://www.cnblogs.com/zhengxl5566/p/11868656.html