Mybatis-Plus支持GBase8s分頁(yè)查詢的實(shí)現(xiàn)示例
MyBatis-Plus (簡(jiǎn)稱 MP)是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生。在最新版 MP 中,已明確支持 南大通用數(shù)據(jù)庫(kù) (GBase 8s)。但是在分頁(yè)查詢上,綁定參數(shù)順序不正確,需要一定調(diào)整。
使用的版本為:
mybatis-plus版本:3.5.1
使用 maven 管理依賴。
<!--mybatis_plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
實(shí)現(xiàn)方法
確認(rèn)攔截器類型,DbType選擇對(duì)應(yīng)枚舉值。
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//添加分頁(yè)插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.GBASEDBT));
return interceptor;
}
}
查看GBase8s對(duì)應(yīng)枚舉值,可參考路徑 com.baomidou.mybatisplus.annotation.DbType

改寫攔截器
可參考路徑 com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor ,隨版本可能變化,可 調(diào)試 步入 定位攔截器位置。
如下為需要修改的代碼段
IDialect dialect = this.findIDialect(executor);
Configuration configuration = ms.getConfiguration();
DialectModel model = dialect.buildPaginationSql(buildSql, page.offset(), page.getSize());
MPBoundSql mpBoundSql = PluginUtils.mpBoundSql(boundSql);
List<ParameterMapping> mappings = mpBoundSql.parameterMappings();
Map<String, Object> additionalParameter = mpBoundSql.additionalParameters();
model.consumers(mappings, configuration, additionalParameter);
mpBoundSql.sql(model.getDialectSql());
mpBoundSql.parameterMappings(mappings);
找到本地依賴包位置, com.baomidou.mybatisplus.extension

找到對(duì)應(yīng)目錄下,會(huì)發(fā)現(xiàn)maven下載了 jar包 、源碼、doc等相關(guān)內(nèi)容,我們需要反編譯 jar包內(nèi)的 PaginationInnerInterceptor
改寫源碼,建議備份一份原始版本

復(fù)制出 mybatis-plus-extension-3.5.1.jar 包,解壓縮,并找到 PaginationInnerInterceptor,反編譯出來。
直接拖進(jìn)IDEA就可以反編譯了。


新建一個(gè)任意空工程,如圖所示,創(chuàng)建包路徑,類名全部與源碼一致,并復(fù)制 反編譯內(nèi)容到新創(chuàng)建的 PaginationInnerInterceptor 類內(nèi)。

接下來,需要將所有校驗(yàn)錯(cuò)誤全部修正。
import相關(guān)錯(cuò)誤,對(duì)應(yīng)導(dǎo)入jar即可。

方法一,本地maven庫(kù)下找到相關(guān)jar包,一個(gè)一個(gè)導(dǎo)入。

方法二,配置 maven下載,在 pom.xml中添加
<!--mybatis_plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- lombok 依賴 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
方法重寫相關(guān)問題,添加注解 @Override 。

變量反編譯相關(guān)問題,反編譯會(huì)有一些小錯(cuò)誤,如重復(fù)聲明,對(duì)應(yīng)修改即可;傳參null注明類型的相關(guān)錯(cuò)誤,直接刪掉 如(Object)即可。

修改為

確定無校驗(yàn)錯(cuò)誤后,修改源碼,找到方法 beforeQuery,添加如下內(nèi)容在對(duì)應(yīng)位置。
if(dbType.equals(DbType.GBASEDBT)){
mappings.add(0,mappings.get(mappings.size()-1));
mappings.add(0,mappings.get(mappings.size()-2));
mappings.remove(mappings.size()-1);
mappings.remove(mappings.size()-1);
}

編譯工程,并找到對(duì)應(yīng) class 文件位置。


使用壓縮程序直接打開本地maven庫(kù)下的 mybatis-plus-extension-3.5.1.jar ,找到對(duì)應(yīng)位置,直接替換 class

打開項(xiàng)目工程,reload maven庫(kù),直接運(yùn)行,測(cè)試通過

到此這篇關(guān)于使 Mybatis-Plus 支持 GBase8s 的分頁(yè)查詢的文章就介紹到這了,更多相關(guān)Mybatis-Plus GBase8s分頁(yè)查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- mybatis-plus分頁(yè)查詢?nèi)N方法小結(jié)
- Mybatis-plus分頁(yè)查詢不生效問題排查全過程
- Mybatis-plus的selectPage()分頁(yè)查詢不生效問題解決
- mybatis-plus實(shí)現(xiàn)自定義SQL、多表查詢與多表分頁(yè)查詢語(yǔ)句實(shí)例
- Mybatis-Plus或PageHelper多表分頁(yè)查詢總條數(shù)不對(duì)問題的解決方法
- 如何使用mybatis-plus實(shí)現(xiàn)分頁(yè)查詢功能
- 一文搞懂Mybatis-plus的分頁(yè)查詢操作
- MyBatis-Plus?分頁(yè)查詢的實(shí)現(xiàn)示例
- mybatis-plus分頁(yè)查詢的實(shí)現(xiàn)示例
- MyBatis-Plus 分頁(yè)查詢以及自定義sql分頁(yè)的實(shí)現(xiàn)
相關(guān)文章
Spring JdbcTemplate實(shí)現(xiàn)添加與查詢方法詳解
JdbcTemplate是Spring框架自帶的對(duì)JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對(duì)數(shù)據(jù)庫(kù)的操作更加方便、友好,效率也不錯(cuò),這篇文章主要介紹了Spring?JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下2022-11-11
Spring Boot console log 格式自定義方式
這篇文章主要介紹了Spring Boot console log 格式自定義方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
關(guān)于SpringBoot靜態(tài)資源路徑管理問題
這篇文章主要介紹了SpringBoot靜態(tài)資源路徑管理,主要包括默認(rèn)靜態(tài)資源路徑,增加靜態(tài)資源路徑前綴的相關(guān)操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
Android 應(yīng)用按返回鍵退向后臺(tái)運(yùn)行實(shí)例代碼
這篇文章主要介紹了Android 應(yīng)用按返回鍵退向后臺(tái)運(yùn)行實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04
JAVA中實(shí)現(xiàn)鏈?zhǔn)讲僮鳎ǚ椒ㄦ湥┑暮?jiǎn)單例子
這篇文章主要介紹了JAVA中實(shí)現(xiàn)鏈?zhǔn)讲僮鞯睦?模仿jQuery的方法鏈實(shí)現(xiàn),需要的朋友可以參考下2014-04-04

