前言
在学习Spring Boot整合第三方技术时遇到了许多折磨人的坑,掉了不少头发,因此在这里以整合 MyBatis-plus(下面简称MP)为例子,给大家在整合时遇到问题一个思路。
1、IDEA创建工程
在IDEA中按照常规的创建Spring Boot项目,即使用 https://start.spring.io 官方的地址进行创建时会发现,不像整合MyBatis一样可以直接勾选,在选项中压根没有 MP 的选项
这时有两种方式可以解决
- 使用阿里云的地址进行创建项目:
https://start.aliyun.com - 使用官方的地址,然后手动导入 MP 的坐标
2、操作步骤
下面是以手动的方式进行演示,选择阿里云的话版本会较低,可以手动在配置文件中修改一下即可。
- 首先在勾选技术时,只勾选 MySQL连接 即可
- 在创建完成之后的pom.xml文件中手动导入 MP 的坐标,自带的 Spring Boot 基本starter包可以删除,因为导入的 MP 坐标中已经包含在内了
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
- 在 Dao 层中继承 BaseMapper 即可,泛型的类型为对应的 pojo
@Mapper
@Repository
public interface UserDao extends BaseMapper<User> {
}
- 配置数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC
username: root
password: 123456
- 编写测试类
@SpringBootTest
class Springboot04MybatisPlusApplicationTests {
@Autowired
private UserDao userDao;
@Test
void contextLoads() {
System.out.println(userDao.selectList(null));
}
}
3、可能遇到的问题
3.1、Maven的install操作报错
在使用Maven时,可能会遇到以下报错
解决办法:在pom.xml中补充缺失的插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
3.2、数据表找不到
在命名数据表的时候通常将其命名为 tb_xxx ,这时 MP 会自动忽略掉前缀 tb_ ,只识别出来后面的 xxx
解决办法:在配置文件中对数据表的前缀进行补充
mybatis-plus:
global-config:
db-config:
table-prefix: sys_
3.3、列名找不到
当我们的数据库的字段名命名出现不规范命名时,会出现实力类中的属性名和数据库中的字段名不匹配,从而出现列名找不到的错误
解决办法:在 MP 中识别实体类中的属性名和字段名是根据实体类中的驼峰命名来判断的,如上图中的 phoneNum,当识别到出现驼峰命名时,MP 会自动将其分割,并以下划线进行拼接,如 phone_num。
当我们了解了这一规则之后,只需要修改实体类中的属性名或者数据库中的字段名即可。下面以修改属性名为例
public class User {
private Integer id;
private String username;
private String email;
private String password;
private String phonenum;
}
|