SpringBoot整合MyBatis-plus

tech2026-02-25  1

1. Mybatis-plus简介

简介:MyBatis-Plus简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。

官网:https://baomidou.com/

2. 准备数据库环境

# 新建用户表 CREATE TABLE IF NOT EXISTS `user`( `id` INT AUTO_INCREMENT, `username` VARCHAR(20) NOT NULL, `birthday` DATETIME NOT NULL, `sex` CHAR(1) NOT NULL, `address` VARCHAR(200) NOT NULL, `password` VARCHAR(20) NOT NULL, CONSTRAINT pk_user PRIMARY KEY(`id`) ); # 添加用户数据 INSERT INTO `user`(`username`, `birthday`, `sex`, `address`, `password`) VALUES ('周瑜', '2020-09-04', '男', '吴国', '123456'), ('关羽', '2020-09-04', '男', '蜀国', '654321'), ('刘备', '2020-09-04', '男', '蜀国', '456789'), ('张飞', '2020-09-04', '男', '蜀国', '987654'), ('赵云', '2020-09-04', '男', '蜀国', '123789'), ('马超', '2020-09-04', '男', '蜀国', '987321'), ('黄忠', '2020-09-04', '男', '蜀国', '147258'), ('曹操', '2020-09-04', '男', '魏国', '852741');

3. 新建SpringBoot工程

4. 项目依赖

<dependencies> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> <!-- jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!-- test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies>

5. SpringBoot配置文件

spring: # 数据源 datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/test?useSSL=false username: root password: root logging: # 日志级别 level: zw: springboot: mapper: debug

6. 用户实体类

@TableName:标注对应表的名称

@TableId:标注主键字段

@TableField:标注普通字段

package zw.springboot.domain; 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.Data; import java.io.Serializable; import java.util.Date; /** * @className UserDO * @description 用户实体类 * @author 周威 * @date 2020-09-04 13:49 **/ @Data @TableName("user") public class UserDO implements Serializable { /* 用户编号 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /* 用户账号 */ @TableField("username") private String username; /* 用户密码 */ @TableField("password") private String password; /* 用户生日 */ @TableField("birthday") private Date birthday; /* 用户性别 */ @TableField("sex") private String sex; /* 用户住址 */ @TableField("address") private String address; }

7. 用户持久层接口

继承BaseMapper接口,填写数据库表对应实体类泛型

package zw.springboot.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import zw.springboot.domain.UserDO; /** * @className UserMapper * @description 用户持久层接口 * @author 周威 * @date 2020-09-04 13:57 **/ @Mapper public interface UserMapper extends BaseMapper<UserDO> { }

8. 数据的查询操作

8.1 查询所有

@Test public void listUserInformationsTest() { List<UserDO> users = userMapper.selectList(null); for (UserDO user : users) { System.out.println("user = " + user); } }

8.2 条件查询

条件构造器 方法示例eq(R column, Object val)eq("name", "老王")—>name = '老王'ne(R column, Object val)ne("name", "老王")—>name <> '老王'gt(R column, Object val)gt("age", 18)—>age > 18ge(R column, Object val)ge("age", 18)—>age >= 18lt(R column, Object val)lt("age", 18)—>age < 18le(R column, Object val)le("age", 18)—>age <= 18between(R column, Object val1, Object val2)between("age", 18, 30)—>age between 18 and 30 @Test public void findUserInformationTest() { QueryWrapper<UserDO> queryWrapper = new QueryWrapper<>(); // wehere username like '%刘%' and sex = '男' queryWrapper.like("username", "刘"); queryWrapper.eq("sex", "男"); List<UserDO> users = userMapper.selectList(queryWrapper); for (UserDO user : users) { System.out.println("user = " + user); } }

9. 数据的添加操作

@Test public void insertUserInformationTest() { UserDO user = new UserDO(); user.setUsername("孙尚香"); user.setPassword("123058"); user.setBirthday(new Date()); user.setSex("女"); user.setAddress("吴国"); Integer count = userMapper.insert(user); System.out.println("count = " + count); System.out.println("user.getId() = " + user.getId()); }

10. 数据的删除操作

@Test public void deleteUserInformationByUserIdTest() { Integer id = 9; Integer count = userMapper.deleteById(id); System.out.println("count = " + count); }

11. 数据的更新操作

@Test public void updateUserInformationByUserIdTest() { UserDO user = new UserDO(); user.setId(8); user.setUsername("貂蝉"); user.setSex("女"); user.setAddress("后汉"); Integer count = userMapper.updateById(user); System.out.println("count = " + count); }

12. 整合分页

新建分页配置类填写分页参数进行数据查询

12.1 分页配置文件

package zw.springboot.config; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @className MyBatisPlusConfig * @description MyBatisPlus配置类 * @author 周威 * @date 2020-09-04 15:05 **/ @Configuration public class MyBatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); return paginationInterceptor; } }

12.2 分页测试

@Test public void listUserInformationsByPageTest() { // 设置分页参数 IPage<UserDO> page = new Page<>(1, 5); // 分页查询数据 IPage<UserDO> pageInfo = userMapper.selectPage(page, null); // 打印分页信息 System.out.println("记录总数:" + pageInfo.getTotal()); System.out.println("总页数:" + pageInfo.getPages()); System.out.println("数据记录:" + pageInfo.getRecords()); }

最新回复(0)