MybatisPlus3.5.5与pagehelper starter2.1.0冲突的问题解决

 更新时间:2024年10月11日 09:51:11   作者:酒醉的胡铁  
在使用MybatisPlus 3.5.5与PageHelper Starter 2.1.0时,由于引用了不同版本的jsqlparser库(4.6与4.7),会导致运行时错误,解决方案涉及确认依赖版本,本文就来介绍一下,感兴趣的同学可以下载学习

问题说明

MybatisPlus3.5.5与pagehelper starter2.1.0同时引用了jsqlparser4.6和4.7在idea中使用并不会报错,打包之后用jar运行便会出现错误

在这里插入图片描述

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

解决方案

首先确认两个依赖的版本号为3.5.5 和 2.1.0

<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>mybatis-plus-boot-starter</artifactId>
    <version>3.5.5</version>
    <exclusions>
    	<exclusion>
    		<groupid>com.github.jsqlparser</groupid>
    		<artifactId>jsqlparser</artifactId>
    	</exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>sqlparser4.5</artifactId>
    <version>6.1.0</version>
</dependency>

建立两个类

import com.github.pagehelper.dialect.helper.MySqlDialect;
import com.github.pagehelper.parser.CountJSqlParser45;
import com.github.pagehelper.parser.CountSqlParser;
import com.github.pagehelper.parser.OrderByJSqlParser45;
import com.github.pagehelper.parser.OrderBySqlParser;
import com.github.pagehelper.util.ClassUtil;

import java.util.Properties;

/**
 * 解决Mybatis Plus与PageHelper之间的冲突
 * 覆盖父类 {@link com.github.pagehelper.dialect.AbstractDialect} 中的setProperties方法,
 * 将CountJSqlParser45、OrderByJSqlParser45提供的两个类来替换掉Default类
 *
 * @Author zsp
 * @Date 2024/7/9
 **/
public class LocalMySqlDialect extends MySqlDialect {

    @Override
    public void setProperties(Properties properties) {
        this.countSqlParser = ClassUtil.newInstance(properties.getProperty("countSqlParser"), CountSqlParser.class, properties, CountJSqlParser45::new);
        this.orderBySqlParser = ClassUtil.newInstance(properties.getProperty("orderBySqlParser"), OrderBySqlParser.class, properties, OrderByJSqlParser45::new);
    }
}
import com.github.pagehelper.page.PageAutoDialect;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

/**
 * 在spring boot启动完成后将LocalMySqlDialect注册进pagehelper
 *
 * @Author zsp
 * @Date 2024/7/9
 **/
@Component
public class DialectInit implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        PageAutoDialect.registerDialectAlias("mysql", LocalMySqlDialect.class);
    }
}

原理

PageAutoDialect这个类是用来管理注册方言的,它在MySql的方言中默认使用了com.github.pagehelper.dialect.helper.MySqlDialect类,而MySqlDialect类继承自com.github.pagehelper.dialect.AbstractDialect类,而AbstractDialect默认实现了setProperties方法,我们覆盖掉这个方法,使用官方提供的4.5兼容包,并重新注册即可。

到此这篇关于MybatisPlus3.5.5与pagehelper starter2.1.0冲突的问题解决的文章就介绍到这了,更多相关MybatisPlus3.5.5与pagehelper starter2.1.0冲突内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Javaweb实现完整个人博客系统流程

    Javaweb实现完整个人博客系统流程

    这篇文章主要介绍了怎样用Java来实现一个完整的个人博客系统,我们通过实操上手的方式可以高效的巩固所学的基础知识,感兴趣的朋友一起来看看吧
    2022-03-03
  • java笔记学习之操作符

    java笔记学习之操作符

    本篇文章给大家分享了关于Java中操作符的相关知识点以及难点总结,有需要的朋友参考学习下吧。
    2018-04-04
  • 解决java Graphics drawImage 无法显示图片的问题

    解决java Graphics drawImage 无法显示图片的问题

    这篇文章主要介绍了解决java Graphics drawImage 无法显示图片的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • springMVC实现图形验证码(kaptcha)代码实例

    springMVC实现图形验证码(kaptcha)代码实例

    这篇文章主要介绍了springMVC实现图形验证码(kaptcha)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2019-09-09
  • Java设计模式之状态模式详解

    Java设计模式之状态模式详解

    Java 中的状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态发生改变时改变其行为,本文将详细介绍 Java 中的状态模式,我们将从状态模式的概述、结构与实现、优缺点、适用场景等方面进行讲解,需要的朋友可以参考下
    2023-05-05
  • Java SpringBoot使用guava过滤器

    Java SpringBoot使用guava过滤器

    这篇文章主要介绍了Java SpringBoot使用guava过滤器,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Nacos启动出现failed to req API:/nacos/v1/ns/instance after all servers问题

    Nacos启动出现failed to req API:/nacos/v1/ns/insta

    这篇文章主要介绍了Nacos启动出现failed to req API:/nacos/v1/ns/instance after all servers问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • JavaWeb入门:HttpResponse和HttpRequest详解

    JavaWeb入门:HttpResponse和HttpRequest详解

    这篇文章主要介绍了Django的HttpRequest和HttpResponse对象,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Java11新特性之HttpClient小试牛刀

    Java11新特性之HttpClient小试牛刀

    本文主要研究一下Java11的HttpClient的基本使用。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • vscode搭建java开发环境的实现步骤

    vscode搭建java开发环境的实现步骤

    本文主要介绍了vscode搭建java开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论