MybatisPlus3.5.5與pagehelper?starter2.1.0沖突的問(wèn)題解決
問(wèn)題說(shuō)明
MybatisPlus3.5.5與pagehelper starter2.1.0同時(shí)引用了jsqlparser4.6和4.7在idea中使用并不會(huì)報(bào)錯(cuò),打包之后用jar運(yùn)行便會(huì)出現(xiàn)錯(cuò)誤

- 如果以jsqlparser4.7版本為準(zhǔn),啟動(dòng)項(xiàng)目都起不起來(lái),原因是jsqlparser4.7版本中把版本4.6的一個(gè)類被干掉了
- 如果以jsqlparser4.6版本為準(zhǔn),啟動(dòng)可以成功,但是查詢會(huì)有問(wèn)題
解決方案
首先確認(rèn)兩個(gè)依賴的版本號(hào)為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>
建立兩個(gè)類
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提供的兩個(gè)類來(lái)替換掉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啟動(dòng)完成后將LocalMySqlDialect注冊(cè)進(jìn)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這個(gè)類是用來(lái)管理注冊(cè)方言的,它在MySql的方言中默認(rèn)使用了com.github.pagehelper.dialect.helper.MySqlDialect類,而MySqlDialect類繼承自com.github.pagehelper.dialect.AbstractDialect類,而AbstractDialect默認(rèn)實(shí)現(xiàn)了setProperties方法,我們覆蓋掉這個(gè)方法,使用官方提供的4.5兼容包,并重新注冊(cè)即可。
到此這篇關(guān)于MybatisPlus3.5.5與pagehelper starter2.1.0沖突的問(wèn)題解決的文章就介紹到這了,更多相關(guān)MybatisPlus3.5.5與pagehelper starter2.1.0沖突內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
netflix.discovery.shared.transport.TransportException:Cannot
這篇文章主要介紹了netflix.discovery.shared.transport.TransportException:Cannot execute request on any known server報(bào)錯(cuò)問(wèn)題及解決方法,感興趣的朋友一起看看吧2023-09-09
java編程實(shí)現(xiàn)并查集的路徑壓縮代碼詳解
這篇文章主要介紹了java編程實(shí)現(xiàn)并查集的路徑壓縮代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考。2017-11-11
如何解決zookeeper集群重啟Error contacting service.It
本文詳細(xì)介紹了Zookeeper集群?jiǎn)?dòng)異常的排查步驟,包括網(wǎng)絡(luò)問(wèn)題、防火墻配置、Java環(huán)境、端口占用、網(wǎng)卡問(wèn)題、網(wǎng)絡(luò)問(wèn)題以及節(jié)點(diǎn)配置信息的檢查,通過(guò)逐一排查和解決這些問(wèn)題,可以有效地啟動(dòng)Zookeeper集群2024-12-12
java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式
Java WebSocket是一種基于TCP協(xié)議的雙向全雙工消息傳輸技術(shù),它允許服務(wù)器和客戶端之間實(shí)時(shí)通信,具有低延遲和高效率的特點(diǎn),下面這篇文章主要給大家介紹了關(guān)于java注解實(shí)現(xiàn)websocket服務(wù)的兩種方式,需要的朋友可以參考下2024-08-08
一篇文章帶你了解SpringMVC數(shù)據(jù)綁定
這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章弄懂Spring MVC的參數(shù)綁定,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
IDEA POM文件配置profile實(shí)現(xiàn)不同環(huán)境切換的方法步驟
這篇文章主要介紹了IDEA POM文件配置profile實(shí)現(xiàn)不同環(huán)境切換的方法步驟2024-03-03

