Mybatis-Plus支持GBase8s分頁查詢的實現示例
MyBatis-Plus (簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上隻做增強不做改變,為簡化開發、提高效率而生。在最新版 MP 中,已明確支持 南大通用數據庫 (GBase 8s)。但是在分頁查詢上,綁定參數順序不正確,需要一定調整。
使用的版本為:
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>
實現方法
確認攔截器類型,DbType選擇對應枚舉值。
@Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //添加分頁插件 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.GBASEDBT)); return interceptor; } }
查看GBase8s對應枚舉值,可參考路徑 com.baomidou.mybatisplus.annotation.DbType
改寫攔截器
可參考路徑 com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor ,隨版本可能變化,可 調試 步入 定位攔截器位置。
如下為需要修改的代碼段
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
找到對應目錄下,會發現maven下載瞭 jar包 、源碼、doc等相關內容,我們需要反編譯 jar包內的 PaginationInnerInterceptor
改寫源碼,建議備份一份原始版本
復制出 mybatis-plus-extension-3.5.1.jar 包,解壓縮,並找到 PaginationInnerInterceptor,反編譯出來。
直接拖進IDEA就可以反編譯瞭。
新建一個任意空工程,如圖所示,創建包路徑,類名全部與源碼一致,並復制 反編譯內容到新創建的 PaginationInnerInterceptor 類內。
接下來,需要將所有校驗錯誤全部修正。
import相關錯誤,對應導入jar即可。
方法一,本地maven庫下找到相關jar包,一個一個導入。
方法二,配置 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>
方法重寫相關問題,添加註解 @Override 。
變量反編譯相關問題,反編譯會有一些小錯誤,如重復聲明,對應修改即可;傳參null註明類型的相關錯誤,直接刪掉 如(Object)即可。
修改為
確定無校驗錯誤後,修改源碼,找到方法 beforeQuery,添加如下內容在對應位置。
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); }
編譯工程,並找到對應 class 文件位置。
使用壓縮程序直接打開本地maven庫下的 mybatis-plus-extension-3.5.1.jar ,找到對應位置,直接替換 class
打開項目工程,reload maven庫,直接運行,測試通過
到此這篇關於使 Mybatis-Plus 支持 GBase8s 的分頁查詢的文章就介紹到這瞭,更多相關Mybatis-Plus GBase8s分頁查詢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Mybatis-plus支持Gbase8s分頁的實現示例
- 詳解MybatisPlus3.4版本之後分頁插件的使用
- springBoot集成mybatis 轉換為 mybatis-plus方式
- mybatis-plus(insertBatchSomeColumn批量添加方式)
- mybatis-plus 如何配置邏輯刪除