Mybatis-plus缓存

mybatis-plus缓存

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上提供了更多的便利性和强大的功能,包括但不限于分页、条件构造器、通用 Mapper、代码生成器等。MyBatis-Plus 也内置了基础的缓存功能,但需要注意的是,MyBatis-Plus 本身并不提供复杂的缓存机制,例如二级缓存。不过,你可以通过集成第三方缓存框架或者使用 MyBatis-Plus 提供的简单缓存机制来实现缓存功能。

1. MyBatis-Plus 简单缓存

MyBatis-Plus 提供了一种简单的缓存机制,可以通过配置来实现。这种方式适用于一些简单的场景,比如查询结果不经常变更的场景。

配置方法:

在 mybatis-config.xml 文件中配置:

xml 复制代码
<settings>
    <!-- 开启二级缓存 -->
    <setting name="cacheEnabled" value="true"/>
</settings>

在 Mapper 接口对应的 XML 文件中或者使用注解的方式开启缓存:

xml 复制代码
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

或者使用 @CacheNamespace 注解:

java 复制代码
@Mapper
@CacheNamespace(implementation = MyCache.class, eviction = CacheType.LRU, size = 1024, readWrite = false)
public interface YourMapper {
    // methods
}

2. 使用第三方缓存框架

对于更复杂的缓存需求,例如需要分布式缓存、更高级的缓存策略等,你可以考虑集成如 Redis、Ehcache、Guava Cache 等第三方缓存框架。

示例:集成 Redis 缓存

添加依赖:首先需要在项目的 pom.xml 中添加 Redis 和 MyBatis-Plus-Redis-Cache 的依赖。

xml 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>你的版本号</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>你的版本号</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

配置 Redis:在 application.properties 或 application.yml 中配置 Redis。

yaml 复制代码
spring:
  redis:
    host: localhost
    port: 6379
    password: yourpassword # 如果不需要密码则不设置或设置为空字符串 ""

集成 MyBatis-Plus Redis 缓存:使用 MyBatis-Plus Redis 缓存插件。首先需要添加对应的插件依赖,然后配置插件。

java 复制代码
@Configuration
public class MybatisPlusConfig {
    @Bean
    public RedisCache redisCache() {
        return new RedisCache(); // 直接使用默认配置即可,或者根据需要自定义配置
    }
}

使用:在你的 Mapper 接口或 XML 中使用缓存注解或标签,例如 @Cacheable。注意这种方式通常用于方法级别的缓存。例如:

java 复制代码
@Select("SELECT * FROM user WHERE id = #{id}")
@Options(useCache = true) // 开启缓存支持,依赖于你的缓存配置和实现方式
User selectById(@Param("id") Integer id);

或者使用第三方库提供的注解如 Spring 的 @Cacheable。这通常需要额外的配置和上下文管理。

java 复制代码
@Cacheable(value = "userCache", key = "#p0") // 使用 Spring 的 @Cacheable 注解进行缓存管理,需要 Spring 的缓存抽象支持。确保你的方法在 Spring 的 Bean 中。 
User selectUserById(Integer id); 

注意这里的 value 是缓存的名字,key 是缓存的键。你需要根据实际情况调整这些值。同时确保你的方法是在 Spring 的 Bean 中定义的,这样 Spring 的缓存抽象才能正确工作。对于复杂的缓存策略(如条件缓存、过期策略等),你可能需要自定义 CacheManager 和 CacheResolver 等。这通常涉及到更复杂的配置和代码实现。

对于复杂的业务场景

相关推荐
卡拉叽里呱啦8 小时前
缓存-变更事件捕捉、更新策略、本地缓存和热key问题
分布式·后端·缓存
jakeswang17 小时前
应用缓存不止是Redis!——亿级流量系统架构设计系列
redis·分布式·后端·缓存
.Shu.19 小时前
Redis zset 渐进式rehash 实现原理、触发条件、执行流程以及数据一致性保障机制【分步源码解析】
数据库·redis·缓存
Mi_Manchikkk19 小时前
Java高级面试实战:Spring Boot微服务与Redis缓存整合案例解析
java·spring boot·redis·缓存·微服务·面试
HeyZoeHey1 天前
Mybatis执行sql流程(一)
java·sql·mybatis
柳贯一(逆流河版)1 天前
Spring 三级缓存:破解循环依赖的底层密码
java·spring·缓存·bean的循环依赖
青川入梦1 天前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis
33255_40857_280592 天前
掌握分页艺术:MyBatis与MyBatis-Plus实战指南(10年Java亲授)
java·mybatis
勿在浮沙筑高台2 天前
无法获取实体类com.example.springdemo2.entity.po.UserPO对应的表名!
java·spring boot·mybatis
如白驹过隙2 天前
cloudflare缓存配置
前端·缓存