1. 创建项目

  1. 使用 IntelliJ IDEA 创建基本 Spring Boot 项目。
  2. 创建项目时选择 JDK 17,因为 MyBatis-Plus 的 3.x 版本不支持 JDK 8
  3. 创建的 Spring Boot 项目版本为 阿里云的 3.0.2 版本
  4. 在创建项目时选择以下选项:
    • JDBC API
    • Spring Boot Web
    • MySQL Connect
    • Lombok

配置数据库连接信息

application.properties 中配置数据库连接信息:

1
2
3
4
# 数据库配置  
spring.datasource.url=jdbc:mysql://localhost:3306/testks?useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=password

2. 引入依赖

pom.xml 文件内添加以下内容:

1
2
3
4
5
6
7
8
9
10
<dependency>  
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.5.9</version>
</dependency>

注意:依赖引入完成后,需记得重新加载依赖文件。

3. 编写实体类

cn.edu.tyut.domain 包下创建 User 实体类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package cn.edu.tyut.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;

// data 注解为 lombok 注解
@Data
@TableName("user")
public class User {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("username")
private String username;
@TableField("password")
private String password;
@TableField("email")
private String email;
@TableField("phone")
private String phone;
@TableField("auth")
private Integer auth;
@TableField("status")
private Integer status;
}
  • @TableName 注解用于指定数据库内表的名称。
  • @TableId 注解用于指定表的 Id 字段,type 属性设置为自增 Id
  • @TableField 注解用于定义数据库中对应的列。表中的列名使用下划线,实体类中字段名称使用驼峰命名规则,框架会自动完成转换。

如果表列名与实体属性名称之间不能自动转换,使用@TableField("u_nick_name") 定义列名。

@TableField(exist = false) 此注解用于封装检索的结果,对应字段在表中并没有列,此时设置 exist 属性为 false

4. 编写 Mapper 文件

mapper 包下新建 UserMapper 接口,继承 BaseMapper 类,接口内容如下:

1
2
3
4
5
6
7
package cn.edu.tyut.mapper;  

import cn.edu.tyut.domain.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper<User> {
}

5. 编写 MyBatis-Plus 配置文件

config 包下新建 MybatisPlusConfig 文件,标注 Mapper 扫描位置:

1
2
3
4
5
6
7
8
9
package cn.edu.tyut.config;  

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("cn.edu.tyut.mapper")
public class MybatisPlusConfig {
}

6. 编写 Controller 文件测试

controller 包下新建 UserController 类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package cn.edu.tyut.controller;  

import cn.edu.tyut.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
@Autowired
private UserMapper userMapper;

@GetMapping("/test")
public void test() {
System.out.println(userMapper.selectById(1));
}
}

7. 访问测试

访问 http://localhost:8080/test 查看控制台输出是否正常。

8. 问题总结

8.1 JDK 版本问题

在之前使用 阿里云的 2.x Spring Boot 版本 时,兼容 JDK 8

但由于 MyBatis-Plus 的 3.x 版本 不支持 JDK 8,需要升级至 JDK 17

解决办法是使用 3.x 的 Spring Boot 版本

建议:在处理版本依赖时,确保各个组件的兼容性,以减少不必要的错误和问题。