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冲突内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java map的key值转驼峰命名的方法

    java map的key值转驼峰命名的方法

    这篇文章主要介绍了java map的key值转驼峰,通过实例代码介绍了Map把“_”形式的key转化为驼峰形式,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Java冒泡排序详解(附有详细代码)

    Java冒泡排序详解(附有详细代码)

    冒泡排序是一种简单的排序算法,通过相邻元素的比较和交换来实现,它虽然在效率上不如其他排序算法,但在某些特定场景下仍然有其应用价值,这篇文章主要介绍了Java冒泡排序的相关资料,文中给出了详细的代码示例,需要的朋友可以参考下
    2025-04-04
  • Java如何利用策略模式替代if/else语句

    Java如何利用策略模式替代if/else语句

    这篇文章主要介绍了Java如何利用策略模式替代if/else语句,帮助大家优化自己的代码,提高程序运行效率,感兴趣的朋友可以了解下
    2020-09-09
  • Java Clone(类的复制)实例代码

    Java Clone(类的复制)实例代码

    Java Clone(类的复制)实例代码,需要的朋友可以参考一下
    2013-03-03
  • netflix.discovery.shared.transport.TransportException:Cannot execute request on any known server

    netflix.discovery.shared.transport.TransportException:Cannot

    这篇文章主要介绍了netflix.discovery.shared.transport.TransportException:Cannot execute request on any known server报错问题及解决方法,感兴趣的朋友一起看看吧
    2023-09-09
  • java编程实现并查集的路径压缩代码详解

    java编程实现并查集的路径压缩代码详解

    这篇文章主要介绍了java编程实现并查集的路径压缩代码详解,具有一定借鉴价值,需要的朋友可以参考。
    2017-11-11
  • 如何解决zookeeper集群重启Error contacting service.It is probably not running问题

    如何解决zookeeper集群重启Error contacting service.It 

    本文详细介绍了Zookeeper集群启动异常的排查步骤,包括网络问题、防火墙配置、Java环境、端口占用、网卡问题、网络问题以及节点配置信息的检查,通过逐一排查和解决这些问题,可以有效地启动Zookeeper集群
    2024-12-12
  • java注解实现websocket服务的两种方式

    java注解实现websocket服务的两种方式

    Java WebSocket是一种基于TCP协议的双向全双工消息传输技术,它允许服务器和客户端之间实时通信,具有低延迟和高效率的特点,下面这篇文章主要给大家介绍了关于java注解实现websocket服务的两种方式,需要的朋友可以参考下
    2024-08-08
  • 一篇文章带你了解SpringMVC数据绑定

    一篇文章带你了解SpringMVC数据绑定

    这篇文章主要给大家介绍了关于如何通过一篇文章弄懂Spring MVC的参数绑定,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-08-08
  • IDEA POM文件配置profile实现不同环境切换的方法步骤

    IDEA POM文件配置profile实现不同环境切换的方法步骤

    这篇文章主要介绍了IDEA POM文件配置profile实现不同环境切换的方法步骤
    2024-03-03

最新评论