mybatis-redis的使用

本文介绍如何在MyBatis中集成Redis作为二级缓存,包括必要的Maven依赖配置、Redis属性配置及Mapper文件中启用缓存的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考
官方文档
http://mybatis.org/redis-cache/
demo
https://github.com/edwinkun/MybatisRedisExample

1 maven依赖

<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.2</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.caches</groupId>
            <artifactId>mybatis-redis</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.3</version>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.6.2</version>
        </dependency>

2 redis.properties
在src目录地下建立redis.properties。内容如下:
host=192.168.230.128

ps:跟踪代码,发现redis.properties配置如下内容有效
这里写图片描述
3 mapper配置文件
需要开启mapper缓存的只需要添加以下即可

相对于ehcached是不简单了呢

### Spring Boot集成MyBatis-Plus与Redis #### 集成MyBatis-Plus 在Spring Boot项目中,通过引入依赖并配置`application.yml`文件可以轻松完成MyBatis-Plus的集成。对于数据库操作而言,这使得开发人员能够专注于业务逻辑而非数据访问层的具体实现细节。 首先,在项目的`pom.xml`文件中添加如下依赖来引入MyBatis-Plus: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本号</version> </dependency> ``` 接着,在`application.yml`中指定包扫描路径以及一些必要的配置项,比如逻辑删除字段、SQL日志打印开关和Mapper XML文件的位置[^3]: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: mapper-locations: classpath*:mapper/*.xml typeAliasesPackage: com.example.demo.entity global-config: db-config: id-type: auto logic-delete-value: 1 logic-not-delete-value: 0 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` 以上配置确保了应用程序能正确连接到MySQL数据库,并启用了MyBatis-Plus的功能特性。 #### 实现CRUD接口 创建实体类和服务接口时继承自`BaseMapper<T>`即可获得基本的数据持久化方法支持。例如,针对用户表的操作可定义如下结构: ```java // User.java (Entity Class) package com.example.demo.entity; import com.baomidou.mybatisplus.annotation.TableLogic; import lombok.Data; @Data public class User { private Long id; private String name; @TableLogic private Integer deleted; } ``` 服务层则可以通过扩展`IService<User>`来自动生成常用的增删改查功能: ```java // UserService.java (Service Interface) package com.example.demo.service; import com.baomidou.mybatisplus.extension.service.IService; import com.example.demo.entity.User; public interface UserService extends IService<User> {} ``` 具体的服务实现通常由框架自动提供,默认情况下无需编写额外代码。 #### Redis缓存集成 为了提高性能或减少重复查询次数,可以在应用中加入Redis作为分布式缓存解决方案之一。同样地,先向Maven工程增加相应的依赖库: ```xml <!-- pom.xml --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> ``` 之后利用工具类如`ApplicationContextUtil`获取Bean实例,而`RedisUtil`负责封装常见的Redis命令以便于调用[^2]。下面给出一个简单的例子展示如何读取存储在Redis中的字符串值: ```java @Autowired private static ApplicationContext applicationContext; static { applicationContext = new ApplicationContextUtil().getApplicationContext(); } @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){ RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } public void set(String key,Object value,long timeout){ ValueOperations<String, Object> vo = redisTemplate.opsForValue(); vo.set(key,value,timeout, TimeUnit.SECONDS); } public Object get(String key){ ValueOperations<String, Object> vo = redisTemplate.opsForValue(); return vo.get(key); } ``` 上述片段展示了怎样初始化`RedisTemplate`对象及其序列化方式的选择;同时也提供了两个基础的方法用于设定键值对及时限(`set`)还有检索特定key对应的value(`get`)。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值