1、原因:
MyBatis-Plus 和 PageHelper 都是用于 MyBatis 的分页插件,但它们不能同时使用,因为它们之间存在依赖冲突。当两者同时加入项目时,可能会导致启动错误,因为它们依赖的 jsqlparser 版本可能不同。
2、解决 MyBatis-Plus 和 PageHelper 冲突的方法有:
- 排除冲突依赖:在 pom.xml 中排除 PageHelper 或 MyBatis-Plus 中的 jsqlparser 依赖,然后单独引入两者都兼容的 jsqlparser 版本。
<!-- PageHelper依赖 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>最新版本</version>
<exclusions>
<exclusion>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- MyBatis-Plus依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
<exclusions>
<exclusion>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 兼容的jsqlparser版本 -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>两者兼容的版本</version>
</dependency>
- 配置MyBatis-Plus的分页插件:在Spring Boot配置类中添加MyBatis-Plus的分页插件配置。
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
- 配置PageHelper:如果不使用MyBatis-Plus的分页插件,可以在Spring Boot配置类中配置PageHelper。
import com.github.pagehelper.PageInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class PageHelperConfig {
@Bean
public PageInterceptor pageInterceptor() {
return new PageInterceptor();
}
}
- 选择其一:在MyBatis-Plus和PageHelper之间选择一个作为分页插件,通常MyBatis-Plus内置的分页插件已经足够使用。
总结:
选择使用MyBatis-Plus通常是一个更好的选择,因为它提供了更多的功能并且与Spring Boot集成得更好。如果决定使用MyBatis-Plus,就不需要再引入PageHelper。如果选择PageHelper,那么需要确保MyBatis-Plus的分页插件没有被激活,以避免冲突。