MyBatisPlus 缓存
时间: 2025-03-07 18:14:12 浏览: 22
### MyBatis-Plus 缓存机制
MyBatis-Plus(简称 MP)作为 MyBatis 的增强工具,在缓存方面并未引入独立的缓存实现,而是完全依赖于 MyBatis 自身提供的缓存机制[^1]。
#### 一级缓存
一级缓存是 MyBatis 默认启用的功能,无需额外配置即可使用。该缓存存在于 `SqlSession` 范围内,因此也被称作本地缓存。只要执行任何增删改查操作并调用了诸如 `commit()` 或者关闭了 `SqlSession` 实例,都会触发一次缓存清理动作[^4]。
```java
// Java代码示例展示如何创建和管理 SqlSession 来利用一级缓存
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
// 查询第一次会命中数据库并将结果放入缓存
List<User> usersFirstQuery = mapper.selectList(null);
// 同样的查询第二次则直接从缓存读取数据而不访问数据库
List<User> usersSecondQuery = mapper.selectList(null);
}
```
#### 配置选项
对于想要调整或禁用一级缓存的情况,可以通过设置全局配置文件中的 `localCacheScope` 参数来控制,默认情况下它会被设为 SESSION 模式表示整个 Session 生命周期内的缓存有效;如果将其改为 STATEMENT,则每次语句执行完毕后即刻清除缓存内容[^3]:
```xml
<settings>
<!-- 设置 localCacheScope 属性 -->
<setting name="localCacheScope" value="STATEMENT"/>
</settings>
```
通过上述描述可以看出,尽管 MyBatis-Plus 并未提供独特的缓存特性,但借助强大的底层支持——MyBatis 的缓存体系结构,仍然能够有效地提升应用程序性能,并允许开发者灵活定制所需行为。
阅读全文
相关推荐


















