欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > MyBatis-Plus缓存机制深度解析与SpringBoot整合实战

MyBatis-Plus缓存机制深度解析与SpringBoot整合实战

2025/9/18 11:35:31 来源:https://blog.csdn.net/qq_42763903/article/details/146515795  浏览:    关键词:MyBatis-Plus缓存机制深度解析与SpringBoot整合实战

一、MyBatis-Plus缓存机制全景解析

MyBatis-Plus在MyBatis原生缓存基础上进行了深度增强,形成了多层次的缓存体系:

1. 缓存层级架构

应用层
├── MP扩展缓存(多租户/逻辑删除)
├── 二级缓存(Mapper级别,跨Session共享)
└── 一级缓存(SqlSession级别,默认开启)

2. 核心优势对比

特性MyBatis原生MyBatis-Plus增强
配置方式XML为主注解+配置类
自动刷新手动控制内置智能刷新逻辑
多租户支持内置SQL解析缓存
监控能力基础增强的统计功能

二、SpringBoot整合完整配置指南

1. 基础配置(application.yml)

mybatis-plus:configuration:cache-enabled: true   # 开启二级缓存local-cache-scope: session  # 一级缓存作用域(SESSION/STATEMENT)global-config:db-config:logic-delete-field: deleted  # 逻辑删除字段名logic-not-delete-value: 0    # 未删除标记值

2. 实体类缓存注解配置

/*** 用户实体类* @CacheNamespace 声明使用自定义Redis缓存实现*/
@TableName("sys_user")
@CacheNamespace(implementation = MybatisRedisCache.class,  // 缓存实现类eviction = MybatisRedisCache.class,       // 淘汰策略类size = 1000,                             // 缓存最大容量readWrite = true                         // 读写模式
)
public class User implements Serializable {@TableId(type = IdType.AUTO)private Long id;@TableField(condition = SqlCondition.LIKE)private String username;@TableLogicprivate Integer deleted;  // 逻辑删除标记字段
}

3. 自定义Redis缓存实现(带注释版)

/*** 自定义Redis缓存实现类*/
public class MybatisRedisCache implements Cache {// 读写锁保证线程安全private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();private final String id;  // Mapper namespace标识private final RedisTemplate<String, Object> redisTemplate;public MybatisRedisCache(String id) {this.id = id;// 从Spring容器获取RedisTemplate实例this.redisTemplate = (RedisTemplate<String, Object>) SpringContextHolder.getBean("redisTemplate");}@Overridepublic String getId() {return this.id;}@Overridepublic void putObject(Object key, Object value) {// 设置缓存,有效期2小时redisTemplate.opsForValue().set(key.toString(), value, 2, TimeUnit.HOURS);}@Overridepublic Object getObject(Object key) {// 从Redis获取缓存return redisTemplate.opsForValue().get</

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词