mybatis-plus 怎么清除缓存
时间: 2023-11-17 14:55:51 浏览: 760
MyBatis-Plus提供了两种方式清除缓存:
1. 清除一级缓存:
一级缓存是在同一个SqlSession中的缓存,可以通过调用`clearCache()`方法来清除一级缓存。
2. 清除二级缓存:
二级缓存是在多个SqlSession之间共享的缓存,可以通过配置文件或注解来配置开启二级缓存,并且需要在Mapper接口的对应方法上添加`@CacheEvict`注解来清除二级缓存。
相关问题
mybatis-plus缓存
MyBatis-Plus中的缓存是通过集成了MyBatis的缓存功能来实现的。MyBatis-Plus提供了一些额外的配置选项来优化和控制缓存的行为。
在MyBatis-Plus中,可以通过在实体类上使用`@TableName`注解来启用缓存功能。同时,还可以通过`@TableId`注解指定实体类中的主键字段。
MyBatis-Plus中的缓存分为两层:一级缓存和二级缓存。一级缓存是SqlSession级别的缓存,它默认开启并且不可关闭。一级缓存是在同一个SqlSession中共享的,可以提高查询性能。但需要注意的是,一级缓存只在同一个SqlSession中有效,当SqlSession关闭后,缓存数据会被清空。
二级缓存是Mapper级别的缓存,在多个SqlSession之间共享。可以通过在Mapper接口上使用`@CacheNamespace`注解开启二级缓存。二级缓存需要在MyBatis配置文件中进行相关配置。可以通过`<cache>`标签来进行配置,包括设置缓存的类型、缓存过期时间等。
另外,MyBatis-Plus还提供了一些额外的注解来控制缓存的行为,如`@Cacheable`注解用于开启查询结果的缓存、`@CacheEvict`注解用于清除指定的缓存等。
如何在MyBatis-Plus中配置实体类的缓存过期时间?
在MyBatis-Plus中,你可以通过配置全局的CacheManager来设置实体类的缓存过期时间。首先,你需要在项目中引入Spring Cloud Alibaba的Sentinel模块,因为Sentinel提供了一个强大的分布式缓存管理机制。
1. 添加依赖:在你的pom.xml或build.gradle文件中添加Sentinel相关的依赖,例如:
```xml
<!-- Maven -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- Gradle -->
implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-sentinel'
```
2. 配置Sentinel Cache:创建一个sentinel.properties文件,配置缓存的相关信息,如缓存名称和超时时间。例如:
```properties
mybatis-plus.global-config.cache.type = com.alibaba.csp.sentinel.slots.block.degraded被列入降级策略的流控开关
mybatis-plus.global-config.cache.type-config.sentinel.cache-evict-timeout-millis = 60000 // 缓存过期时间为60秒
```
这里`cache-evict-timeout-millis`就是指定的缓存过期时间。
3. 启动应用并生效:启动你的应用程序,配置完成后MyBatis-Plus会根据Sentinel的配置来管理实体类的缓存,超过指定时间未使用的数据会被自动清除。
需要注意的是,这步操作会影响到整个项目的缓存策略,并非针对特定的实体类。如果需要为单个实体类定制缓存规则,可以考虑使用Redisson这样的第三方缓存工具,或者自定义缓存拦截器。
阅读全文
相关推荐















