项目场景:
因为springboot3的如火如荼,我下载了jdk17,开始摸索这个新的springboot版本。
熟悉技术的一个途径是通过视频文字涉猎其他人的经验,另一个途径即为上手实践,所以我准备把自己之前的jdk8,使用springboot2.X的项目改为3.X的实现。
问题描述
简单地建了一个mapper文件夹,在其中先写一个AdminMapper,然后就在启动类上加了一个mapperScan的注解,启动服务,哦豁,失败了。
import com.example.hrms.entity.Admin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface AdminMapper extends BaseMapper<Admin> {
}
@SpringBootApplication
@MapperScan("com.example.hrms.mapper")
public class HrmsApplication {
public static void main(String[] args) {
SpringApplication.run(HrmsApplication.class, args);
}
}
原因分析:
从报错日志上看,Invalid value type for attribute 'factoryBeanObjectType': java.lang.String
这个错误,先确认了一遍自己的mapper是否写错,毕竟也经常粗心大意。
然后找了一遍度娘,看到springboot3.X,mybatisplus的版本应该>=3.5.3,将版本改完后,仍然没有解决问题。
作者使用的springboot版本如下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
然后继续度娘,了解到以下两点
mybatis-plus-boot-starter 通常是用于支持较早版本的 Spring Boot,比如 Spring Boot 2.x系列。
mybatis-plus-spring-boot3-starter 则是为了支持较新的 Spring Boot 3.x系列而设计的。随着 Spring Boot 的版本更新,可能会有一些 API 变动或新特性加入,因此,针对特定版本的 Spring Boot Starter 会确保最佳的兼容性和利用最新的 Spring Boot 特性。
解决方案:
由此,将mybatisplus的artifactid改为以下内容,服务启动成功
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
</dependency>
相关链接
SpringBoot3使用Mybatis/plus Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String