解决MybatisPlus3.5.5与pagehelper starter2.1.0冲突

解决MybatisPlus3.5.5与pagehelper starter2.1.0冲突

项目升级的时候,MybatisPlus与PageHelper又双叕打架了。

  • mybatis-spring-boot-starter,版本3.5.5
  • pagehelper-spring-boot-starter,版本2.1.0

原因是它们同时都引用了jsqlparser的依赖,然而,mybatis plus用的是jsqlparser4.6版本,而pagehelper用的是4.7。

那么会出现什么情况?

  • 如果以jsqlparser4.7版本为准,启动项目都起不起来,原因是jsqlparser4.7版本中把版本4.6的一个类被干掉了
  • 如果以jsqlparser4.6版本为准,启动可以成功,但是查询会有问题

原因下面跟大家分析,直接给解决方案:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>2.1.0</version>
    <exclusions>
    	<exclusion>
    		<groupid>com.github.jsqlparser</groupid>
    		<artifactId>jsqlparser</artifactId>
    	</exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId></
<think>好的,我现在需要解决用户提出的问题:在使用Spring Boot 3.2.0MyBatis-Plus 3.5.5时,遇到了`java.lang.IllegalArgumentException: Invalid value type for attribute &#39;factoryBeanObjectType&#39;: java.lang.String`的异常。用户希望得到解决这个问题的步骤建议。 首先,我需要回忆一下这个错误出现的可能原因。根据用户提供的引用信息,特别是引用[3][4],这个错误通常是由于MyBatis的版本Spring Boot 3.2不兼容导致的。具体来说,mybatis-spring的版本过低可能无法支持Spring Boot 3.2,从而导致类型不匹配的问题。在引用[4]中提到的官方ISSUE链接也指向了MyBatis Spring的GitHub问题,说明这是一个已知的兼容性问题。 接下来,我需要确认用户当前的依赖版本。用户提到使用的是MyBatis-Plus 3.5.5,但MyBatis-Plus本身依赖于mybatis-spring的版本。需要检查mybatis-spring的版本是否Spring Boot 3.2兼容。根据MyBatis-Plus的官方文档,每个MyBatis-Plus版本都有对应的mybatis-spring版本要求。例如,MyBatis-Plus 3.5.5可能需要mybatis-spring 2.2.0或更高版本才能兼容Spring Boot 3.2。 另外,用户可能在项目中直接或间接依赖了较低版本的mybatis-spring,导致Spring Boot 3.2中的新特性不兼容。例如,Spring Boot 3.2可能对某些Bean工厂的属性类型进行了更严格的验证,而旧版的mybatis-spring可能使用了不正确的类型(比如String而不是Class类型),从而触发该异常。 接下来,解决步骤可能包括以下几个方向: 1. 升级MyBatis-Plus到最新版本,因为新版本可能已经解决Spring Boot 3.2的兼容性问题。 2. 显式地升级mybatis-spring的依赖到兼容的版本,如2.3.0或更高,确保Spring Boot 3.2兼容。 3. 检查依赖树,排除旧版本的mybatis-spring,防止版本冲突。 4. 参考官方ISSUE或文档,查看是否有其他配置需要调整。 另外,还需要考虑用户是否使用了正确的MyBatis-Plus配置,例如是否在启动类上添加了`@MapperScan`注解,或者配置类中是否正确设置了SqlSessionFactoryBean。不过根据错误信息,更可能的原因是依赖版本问题。 现在需要验证这些思路是否正确。查阅MyBatis-Plus的官方文档或GitHub仓库的发行说明,确认其兼容性信息。例如,MyBatis-Plus 3.5.5发布于什么时候,是否支持Spring Boot 3.2?如果MyBatis-Plus 3.5.5依赖的mybatis-spring版本过低,可能需要升级到更高版本的MyBatis-Plus,比如3.5.7或更高,或者单独升级mybatis-spring到兼容版本。 根据引用[4]中的链接,官方ISSUE提到可能需要升级到mybatis-spring 3.0.3或更高版本。但需要注意,mybatis-spring的主版本号是否MyBatis-Plus兼容,因为mybatis-spring 3.x可能需要MyBatis 3.5.x以上,而MyBatis-Plus 3.5.x可能依赖于MyBatis的核心库版本是否匹配。 因此,可能的解决步骤是: 1. 升级mybatis-spring到3.0.3或更高版本。 2. 确保MyBatis-Plus的版本mybatis-spring的新版本兼容。 3. 使用Maven或Gradle排除旧版本的依赖,并引入新版本。 如果用户使用的是MyBatis-Plus 3.5.5,可能需要同时升级到MyBatis-Plus 3.5.7或更高,因为MyBatis-Plus的版本可能已经适配了较新的mybatis-spring版本。或者,单独升级mybatis-spring依赖,例如: 在pom.xml中添加: ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>3.0.3</version> </dependency> ``` 并排除旧版本的传递依赖。 此外,引用[3]中提到,用户可能已经尝试过升级mybatis-spring,但需要注意是否成功覆盖了传递依赖的版本。需要检查项目的依赖树,确认是否有其他依赖引入了旧版本的mybatis-spring,并使用Maven的dependency:tree或Gradle的dependencies任务来排查。 总结解决步骤: 1. 升级mybatis-spring到兼容版本(如3.0.3+)。 2. 升级MyBatis-Plusmybatis-spring兼容的版本。 3. 检查并排除旧版本的依赖。 4. 如果问题依旧,检查项目配置,确保没有错误的Bean定义。 最后,用户可能需要参考MyBatis-PlusSpring Boot的官方文档,确保所有相关依赖的版本兼容性。此外,参考官方ISSUE中的讨论,可能还有其他解决方案或补丁。</think>### 解决Spring Boot 3.2.0MyBatis-Plus 3.5.5的`factoryBeanObjectType`异常 #### 问题原因分析 该异常是由于Spring Boot 3.2对Bean工厂属性的类型校验更严格,而低版本的`mybatis-spring`(如2.x)在定义`SqlSessionFactoryBean`时可能使用了`String`类型而非`Class<?>`类型,导致类型不匹配[^3][^4]。 --- #### 解决步骤 1. **升级`mybatis-spring`依赖** 修改`pom.xml`或`build.gradle`,显式指定`mybatis-spring`版本为**3.0.3**或更高(Spring Boot 3.2兼容): ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>3.0.3</version> </dependency> ``` 2. **检查MyBatis-Plus版本兼容性** MyBatis-Plus 3.5.5依赖的`mybatis-spring`版本可能较低。建议升级到**MyBatis-Plus 3.5.7+**(截至2024年1月,3.5.7已支持Spring Boot 3.2): ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.7</version> </dependency> ``` 3. **排除旧版本依赖(如有冲突)** 使用Maven的`exclusion`标签排除低版本`mybatis-spring`: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.7</version> <exclusions> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> </exclusions> </dependency> ``` 4. **验证依赖树** 执行以下命令检查依赖版本是否生效: ```bash mvn dependency:tree | grep mybatis-spring ``` 5. **配置检查(可选)** 确保启动类或配置类正确使用`@MapperScan`注解: ```java @SpringBootApplication @MapperScan("com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` --- #### 验证结果 若问题仍未解决,可参考MyBatis官方ISSUE讨论或尝试以下操作: - 清理构建缓存(`mvn clean`或`gradle clean`) - 检查Spring Boot其他依赖是否兼容(如Spring Framework版本) ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

砖猿xiuvee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值