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

对于复杂的业务场景

相关推荐
hweiyu001 小时前
Redis命令:MSETNX
redis·缓存
wdfk_prog4 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros
是Dream呀9 小时前
Harness 工程:让 Agent 真正把任务做完
人工智能·分布式·缓存·agent
毕业设计70311 小时前
(免费领源码) SpringBoot 游戏交易平台17600-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·spring boot·mysql·决策树·mybatis·idea·推荐算法
努力努力再努力wz12 小时前
【Redis进阶系列】:从主从复制到 Sentinel,一文建立故障检测、Leader 选举与 Failover 的完整心智模型
数据库·redis·缓存
程序员JerrySUN1 天前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
linmengmeng_13141 天前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
wdfk_prog1 天前
ROS教程10:从 gtest 到 rostest——Unit Test、Node 集成测试、rosbag 与 rqt 验证闭环
运维·缓存·docker·容器·ros
vx_BS813301 天前
【项目编号:project51381】Spring Boot 婚纱摄影管理系统:套餐预约、在线咨询、支付与客片展示的一站式业务实现
java·spring boot·eclipse·tomcat·mybatis
程序猿乐锅2 天前
【黑马点评 | 第四篇】Redis缓存雪崩
java·数据库·spring boot·redis·缓存