MyBatis-Plus与PageHelper的jsqlparser库冲突问题

news/2025/2/10 14:08:25/
背景介绍

在最近的一个项目中,我们决定将Spring Boot升级至3.x版本,并同时升级了MyBatis-Plus到最新版本(3.5.7)。然而,在完成这些升级之后,我们遇到了一个问题:分页插件PageHelper无法正常工作。经过排查发现,这是因为MyBatis-Plus和PageHelper都依赖于jsqlparser库,但它们所依赖的版本存在冲突。

问题描述

我们的项目使用了以下依赖:

  • MyBatis-Plus: 版本3.5.7
  • PageHelper: 版本2.1.0

PageHelper要求使用的jsqlparser版本为4.7,而MyBatis-Plus可能引入了一个不同版本的jsqlparser。这种不一致导致了兼容性问题,使得PageHelper不能正确解析SQL语句,从而影响了其分页功能的正常使用。

冲突原因分析

由于两个库都依赖于jsqlparser,当两个库对jsqlparser的版本有不同的需求时,就会发生冲突。例如,PageHelper需要jsqlparser的特定版本来确保其解析SQL的能力,而MyBatis-Plus可能引入了一个更新或更旧版本的jsqlparser,这可能会破坏PageHelper的功能。

解决方案详解

为了确保项目的正常运行,我们需要手动解决这个依赖冲突。以下是详细的解决方案:

步骤一:排除冲突的jsqlparser依赖

pom.xml文件中,针对MyBatis-Plus和PageHelper的依赖,分别排除其自带的jsqlparser依赖。这样做的目的是避免自动导入的jsqlparser版本之间产生冲突。

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version><exclusions><exclusion><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId></exclusion></exclusions>
</dependency>
<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>
步骤二:添加指定版本的jsqlparser依赖

接下来,在pom.xml中明确添加jsqlparser 4.7版本的依赖。这样做是为了确保项目中所有依赖jsqlparser的地方都使用相同版本的库,从而避免潜在的兼容性问题。

<dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.7</version>
</dependency>
注意事项

尽管通过上述步骤可以解决依赖冲突问题,但在实际开发过程中,还是建议尽量避免同时使用MyBatis-Plus和PageHelper。因为即使解决了当前的版本冲突问题,未来随着库的更新,可能会出现新的不兼容情况。此外,MyBatis-Plus自身也提供了分页插件,可以作为替代方案考虑。


http://www.ppmy.cn/news/1570875.html

相关文章

【声音转文字CapsWriter】声音随时转化为文字,CapsWriter提高工作效率

文章目录 前言1. 软件与模型下载2. 本地使用测试3. 异地远程使用3.1 内网穿透工具下载安装3.2 配置公网地址3.3 修改config文件3.4 异地远程访问服务端 4. 配置固定公网地址4.1 修改config文件 5. 固定tcp公网地址远程访问服务端 前言 今天我要给大家安利一个神器——CapsWrit…

Linux下安装SVN服务端小白教程

安装 使用yum安装非常简单&#xff1a; yum install subversion 配置 2.1. 创建仓库 我们这里在/home下建立一个名为svn的仓库&#xff08;repository&#xff09;&#xff0c;以后所有代码都放在这个下面&#xff0c;创建成功后在svn下面多了几个文件夹。 [rootlocalhos…

了解大语言模型的基本原理(三)——如何正确使用ChatGPT

想要正确使用Chat GPT&#xff0c;就需要提高和AI沟通的质量和效率&#xff0c;这就需要提示工程&#xff08;Prompt Engineering&#xff09;。 ChatGPT的缺陷&#xff1a;由于LLM是根据预测下一个最大概率token来生成文本的&#xff0c;所以ChatGPT对于没有学习过的知识或者…

【5】阿里面试题整理

[1]. 介绍一下ZooKeeper ZooKeeper是一个开源的分布式协调服务&#xff0c;核心功能是通过树形数据模型&#xff08;ZNode&#xff09;和Watch机制&#xff0c;解决分布式系统的一致性问题。 它使用ZAB协议保障数据一致性&#xff0c;典型场景包括分布式锁、配置管理和服务注…

uniapp使用路由名称跳转

由于web端和app公用一套菜单&#xff0c;而两个项目的路径是不同的&#xff0c;为解决这个问题&#xff0c;封装了一套使用路由名称作为跳转路由的方法 1.在pages.json文件里pages对应的页面配置里添加 routeName 字段&#xff08;自定义&#xff09;&#xff0c;我做的app里面…

基于lstm+gru+transformer的电池寿命预测健康状态预测-完整数据代码

项目视频讲解: 毕业设计:基于lstm+gru+transformer的电池寿命预测 健康状态预测_哔哩哔哩_bilibili 数据: 实验结果:

Unity3D实现UGUI拖拽移动

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、实现原理👉二、方法一👉方法二👉壁纸分享👉总结👉前言 在 Unity UGUI 中实现拖拽移动的功能,主要基于事件系统、坐标转换和位置更新这几个关键步骤,下面详细介绍其原理 博客将会介绍如何实现UGUI拖…

如何将Excel的表格存为图片?

emmm&#xff0c;不知道题主具体的应用场景是什么&#xff0c;就分享几个我一般会用到的场景下奖excel表格保存为图片的技巧吧&#xff01; 先来个总结&#xff1a; 方法 适用场景 画质 操作难度 截图&#xff08;WinShiftS&#xff09; 快速保存表格&#xff0c;方便粘贴…