myabtisplus 一级缓存
时间: 2023-09-11 08:03:10 浏览: 70
Mybatis的缓存1
MyBatis-Plus(简称 MP)是基于 MyBatis 的增强工具,提供了许多便捷的功能和扩展,其中包括一级缓存。
一级缓存是 MyBatis 中默认开启的缓存机制。它位于 SqlSession 层,用于缓存查询的结果集。当执行相同的 SQL 语句时,MyBatis 会先检查一级缓存中是否已经存在相应的缓存数据,如果存在,则直接从缓存中获取,而不去数据库中查询。这样可以大大提高查询性能。
一级缓存的生命周期与 SqlSession 相关联,当 SqlSession 提交或关闭时,一级缓存也会被清空。如果在同一个 SqlSession 中执行了更新操作(例如插入、更新、删除等),那么一级缓存也会被清空,以保证数据的一致性。
在 MyBatis-Plus 中,可以通过一些配置来控制一级缓存的行为,例如:
1. 在配置文件中设置 `<setting name="localCacheScope" value="STATEMENT" />`,可以将一级缓存的范围设置为 STATEMENT,这样每次执行 SQL 语句都会清空一级缓存,可以避免脏读的问题。
2. 使用 `@CacheNamespace` 注解,可以在 Mapper 接口类上配置缓存策略,包括开启/关闭缓存、缓存过期时间等。
需要注意的是,一级缓存是基于对象引用的,如果两次查询的返回结果对象相同(通过 equals 方法比较),则会直接返回缓存中的对象。因此,在修改查询结果对象时要小心,以免影响其他查询结果的一致性。
阅读全文