本文主要介绍 SpringBoot 整合 MyBatis-Plus 的方法,对其中容易出现的问题进行记录

MyBatis-Plus 官网介绍文档地址:https://baomidou.com/

一、基础准备

1. 下载 MyBatisX 插件

MyBatisX 能让我们更轻松的使用 MyBatis,如实现 Mapper 快速跳转 SQL 映射文件 等功能。

下载方法: 在 File - Settings - Plugins 搜索 MyBatisX 安装即可

spring boot mybatis全局参数 spring boot整合mybatis plus_mybatis


2. 创建数据库表并添加几条字段

CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

附录:通过 Navicat 设置主键自动递增方法

spring boot mybatis全局参数 spring boot整合mybatis plus_User_02

二、整合 MyBatis-Plus

1. 引入 mybatis-plus-boot-starter 依赖

<dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.1</version>
  </dependency>

依赖分析:mybatis-plus-boot-starter 帮助我们引入了 jdbc 包、MyBatis 包,因此这两个包都不用单独引入了。

spring boot mybatis全局参数 spring boot整合mybatis plus_spring boot_03

自动配置分析

  • MybatisPlusAutoConfiguration 配置类,其与MybatisPlusProperties 配置项绑定,配置项绑定配置文件的 mybatis-plus
  • 自动配置好 sqlSessionFactory
  • 自动配置好 mapperLocations ,其有默认值,默认值为 classpath*:/mapper/**/*.xml。表示任意包的类路径下的 mapper 文件夹下的任意路径下的 xml 文件都解析为 SQL 映射文件。
  • 自动配置好 SqlSessionTemplate
  • 配置好 @Mapper 注释的接口自动扫描

总结: Mybatis-Plus 将所有我们需要的一切都配置好了,我们只要开发就行了

2. 配置数据源

spring:
  datasource: # 配置数据库属性
    url: jdbc:mysql://localhost:3306/practice
    username: root
    password: 5201314love
    driver-class-name: com.mysql.jdbc.Driver

3. 在 SpringBoot 启动类中添加 @MapperScan 注释

`@MapperScan 用于扫描 Mapper 接口所在文件夹,其实现批量扫描,省的每个接口都需要写 @Mapper 注释

@SpringBootApplication
@MapperScan("com.wanqing.admin.mapper") // 接口上上不需要标注 Mapper
public class DemoAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoAdminApplication.class, args);
    }
}

4. 准备 User 类

@Data // Lombok 简化开发
public class User {
   
    @TableField(exist = false)
    private String userName;
    @TableField(exist = false)
    private String password;
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

注: MyBatis-Plus 要求操作实体类的每条属性都要在数据库中存在,对数据库中不存在的临时属性,要通过 @TableField(exist = false) 注释。

5. 编写 Mapper 接口

接口需要继承MyBatis-Plus 提供的 BaseMapper 类, BaseMapper 类为我们提供了基础的增删改查功能 (crud) ,使得我们不需要书写 SQL 映射 xml 文件,不需要再编写 sql 语句,除非我们要实现的操作数据库功能特别复杂。

public interface UserMapper extends BaseMapper<User> {
}

BaseMapper为我们提供了大部分的数据库操作方法,如下:

spring boot mybatis全局参数 spring boot整合mybatis plus_User_04

6. 测试是否整合成功

在 SpringBoot 为我们提供的自动测试类中,添加如下方法,测试通过指定 id 查找用户信息:

@Autowired // 自动注入 userMapper
    UserMapper userMapper;
    
    @Test
    void testUserMapper(){
        User user = userMapper.selectById(1L);
        log.info("用户信息: {}", user);
    }