springboot mybatis-plus redis
时间: 2025-02-06 16:14:34 浏览: 37
### 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`)。
阅读全文
相关推荐


















