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

对于复杂的业务场景

相关推荐
netyeaxi2 小时前
Java:使用spring-boot + mybatis如何打印SQL日志?
java·spring·mybatis
小七mod3 小时前
【MyBatis】MyBatis与Spring和Spring Boot整合原理
spring boot·spring·mybatis
椰椰椰耶12 小时前
【MyBatis】XML实现,配置方法和增、删、改、查
xml·oracle·mybatis
夜斗小神社15 小时前
【黑马点评】(二)缓存
缓存
GJCTYU15 小时前
spring中@Transactional注解和事务的实战理解附代码
数据库·spring boot·后端·spring·oracle·mybatis
Hello.Reader1 天前
Redis 延迟监控深度指南
数据库·redis·缓存
DuelCode1 天前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
Hello.Reader1 天前
Redis 延迟排查与优化全攻略
数据库·redis·缓存
荔枝吻1 天前
【沉浸式解决问题】idea开发中mapper类中突然找不到对应实体类
java·intellij-idea·mybatis
JAVA学习通1 天前
Mybatis--动态SQL
sql·tomcat·mybatis