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 等。这通常涉及到更复杂的配置和代码实现。

对于复杂的业务场景

相关推荐
阿杰真不会敲代码2 小时前
Mybatis-plus入门到精通
java·tomcat·mybatis
My LQS2 小时前
使用 Redis Stack 向量索引构建大模型问答缓存系统
redis·缓存·ai
侠客行03179 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
老毛肚11 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
IT陈图图18 小时前
CANN生态数据引擎:minddata的缓存策略与性能调优
缓存·cann
啦啦啦_999921 小时前
Redis-2-queryFormat()方法
数据库·redis·缓存
独断万古他化1 天前
【SSM开发实战:博客系统】(三)核心业务功能开发与安全加密实现
spring boot·spring·mybatis·博客系统·加密
forestsea1 天前
深入理解Redisson RLocalCachedMap:本地缓存过期策略全解析
redis·缓存·redisson
啦啦啦_99991 天前
Redis-0-业务逻辑
数据库·redis·缓存
自不量力的A同学1 天前
Redisson 4.2.0 发布,官方推荐的 Redis 客户端
数据库·redis·缓存