MyBatis-Plus 是一个 MyBatis 的增强工具,旨在简化开发、减少工作量。本文将介绍如何使用 Spring Boot 集成 MyBatis-Plus 来操作数据库,并结合 Redis 实现数据的缓存功能。
可以通过 Spring Initializr 快速创建一个新的 Spring Boot 项目,选择必要的依赖如 Spring Web, MyBatis Plus, MySQL Driver 和 Spring Data Redis 等。
在 pom.xml
文件中添加以下依赖:
com.baomidou
mybatis-plus-boot-starter
1.2.18
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-data-redis
在 application.yml
或 application.properties
中配置数据库连接和 Redis 连接信息。
spring:
datasource:
url: jdbc:mysql://localhost:3306/yourdb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: yourpassword
redis:
host: localhost
port: 6379
根据 book_tab
表结构创建对应的实体类 Book
。
package com.ffyc.springboot.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("book_tab")
public class Book {
@TableId(value="book_id",type = IdType.AUTO)
private Integer id;
@TableField("book_title")
private String title;
@TableField("book_author")
private String author;
@TableField("book_price")
private Double price;
@TableField("book_desc")
private String descx;
}
使用 MyBatis-Plus 提供的 BaseMapper
快速编写 DAO 层接口。
package com.ffyc.springboot.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ffyc.springboot.entity.Book;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IBookMapper extends BaseMapper {
}
CURD(增删改查)的实现以及全查询,模糊查询,分页处理,缓存redis.
package com.ffyc.springboot.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ffyc.springboot.entity.Book;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.ReactiveRedisOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
import static org.junit.Assert.*;
//构建SpringBoot测试环境
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class IBookMapperTest {
@Autowired//创建IBookTest的实现类
private IBookMapper mapper;
@Autowired//redis的操作类
private StringRedisTemplate stringRedisTemplate;
private ReactiveRedisOperations
在实现分页的时候,记得先安装分页的插件,MyBatis-Plus的分页插件PaginationInnerInterceptor提供了强大的分页功能,支持多种数据库,使得分页查询变得简洁高效。
package com.ffyc.springboot.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 分页拦截器
* @ClassName MybatisplusInterceptor
* @Description TODO
* @Author 49354
* @Date 2025/3/2 14:32
* @Version 1.0
*/
@Configuration //配置,交给管家-spring
@MapperScan("com.ffyc.springboot.mapper")
public class MybatisplusInterceptor {
//让管家spring帮我们造成拦截器对象
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
return interceptor;
}
}
通过上述步骤,我们已经完成了使用 Spring Boot 和 MyBatis-Plus 对 book_tab
表进行增删改查操作,并实现了简单的 Redis 缓存机制。MyBatis-Plus 极大地简化了我们的开发流程,让我们能够更专注于业务逻辑的实现。希望这篇博客能帮助你快速上手 MyBatis-Plus 的开发。