解决 Maven 下 MyBatis-Plus 和 PageHelper 冲突问题的方法如下:
问题描述
在使用 Maven 构建项目时,如果引入了 MyBatis-Plus 和 PageHelper 两个依赖,会因为它们都依赖于 MyBatis 造成冲突,导致编译出错。
具体来说,MyBatis-Plus 依赖 MyBatis 3.5.x,而 PageHelper 依赖的是 MyBatis 3.4.x 版本,两者不兼容。
解决方法
- 使用 Exclusions 排除依赖冲突
在 pom.xml 文件中,排除 PageHelper 的 MyBatis 依赖,仅保留 MyBatis-Plus 的依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
这样可以解决依赖冲突问题,但有可能会出现 PageHelper 不兼容 MyBatis-Plus 的情况。
- 使用正确版本的 PageHelper
根据官方文档[1],MyBatis-Plus 3.4.x 版本兼容 PageHelper 5.1.x 版本,因此可以将 PageHelper 的版本调整为 5.1.x,与 MyBatis-Plus 一致。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>5.1.11</version>
</dependency>
这样就不会出现依赖冲突的问题了。
示例
在 pom.xml 文件中添加 MyBatis-Plus 和 PageHelper 的依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
编译时,出现如下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project demo: Compilation failure: Compilation failure:
[ERROR] /Users/user/Documents/Workspace/demo/src/main/java/com/example/demo/controller/DemoController.java:[10,32] package com.github.pagehelper.page does not exist
这是因为 PageHelper 1.3.0 版本依赖的 MyBatis 版本与 MyBatis-Plus 不兼容,需要解决依赖冲突问题。
将 PageHelper 的版本调整为 5.1.11:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>5.1.11</version>
</dependency>
重新编译即可通过。
另外,如果想将 PageHelper 的 MyBatis 依赖排除,也可以使用以下配置:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
其中,最后添加了 MyBatis 3.5.7 的依赖,解决 PageHelper 和 MyBatis-Plus 不兼容的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:maven下mybatis-plus和pagehelp冲突问题的解决方法 - Python技术站