Mybatis-Plus支持GBase8s分页查询的实现示例

作者:热心网友小红 时间:2021-11-21 14:33:30 

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

Mybatis-Plus支持GBase8s分页查询的实现示例

改写 *

可参考路径 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

Mybatis-Plus支持GBase8s分页查询的实现示例

找到对应目录下,会发现maven下载了 jar包 、源码、doc等相关内容,我们需要反编译 jar包内的 PaginationInnerInterceptor

改写源码,建议备份一份原始版本

Mybatis-Plus支持GBase8s分页查询的实现示例

复制出 mybatis-plus-extension-3.5.1.jar 包,解压缩,并找到 PaginationInnerInterceptor,反编译出来。

直接拖进IDEA就可以反编译了。

Mybatis-Plus支持GBase8s分页查询的实现示例

Mybatis-Plus支持GBase8s分页查询的实现示例

新建一个任意空工程,如图所示,创建包路径,类名全部与源码一致,并复制 反编译内容到新创建的 PaginationInnerInterceptor 类内。

Mybatis-Plus支持GBase8s分页查询的实现示例

接下来,需要将所有校验错误全部修正。

import相关错误,对应导入jar即可。

Mybatis-Plus支持GBase8s分页查询的实现示例

方法一,本地maven库下找到相关jar包,一个一个导入。

Mybatis-Plus支持GBase8s分页查询的实现示例

方法二,配置 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 。

Mybatis-Plus支持GBase8s分页查询的实现示例

变量反编译相关问题,反编译会有一些小错误,如重复声明,对应修改即可;传参null注明类型的相关错误,直接删掉 如(Object)即可。

Mybatis-Plus支持GBase8s分页查询的实现示例

修改为

Mybatis-Plus支持GBase8s分页查询的实现示例

确定无校验错误后,修改源码,找到方法 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);
   }

Mybatis-Plus支持GBase8s分页查询的实现示例

编译工程,并找到对应 class 文件位置。

Mybatis-Plus支持GBase8s分页查询的实现示例

Mybatis-Plus支持GBase8s分页查询的实现示例

使用压缩程序直接打开本地maven库下的 mybatis-plus-extension-3.5.1.jar ,找到对应位置,直接替换 class

Mybatis-Plus支持GBase8s分页查询的实现示例

打开项目工程,reload maven库,直接运行,测试通过

Mybatis-Plus支持GBase8s分页查询的实现示例

来源:https://blog.csdn.net/qq_33935229/article/details/127918613

标签:Mybatis-Plus,GBase8s,分页查询
0
投稿

猜你喜欢

  • 基于Android SDK-在64位Linux中使用需要注意的问题

    2022-03-26 16:49:13
  • java实现微信公众号发送模版消息

    2022-04-23 08:09:11
  • C#清除字符串内空格的方法

    2023-10-07 15:51:04
  • 解析java基本数据类型传递与引用传递区别

    2022-04-14 18:37:19
  • spring boot+vue 的前后端分离与合并方案实例详解

    2023-08-20 10:41:07
  • maven手动上传jar包示例及图文步骤过程

    2023-11-13 22:10:57
  • Java使用OCR技术识别验证码实现自动化登陆方法

    2022-03-10 04:34:52
  • Java中定时器Timer致命缺点案例详解

    2022-08-27 08:38:45
  • JAVA如何按字节截取字符串

    2023-11-25 13:31:41
  • java中this与super关键字的使用方法

    2022-05-04 22:03:29
  • android webvie指定视频播放器播放网站视频

    2021-06-11 00:01:28
  • java 使用异常的好处总结

    2023-11-29 13:35:49
  • ubuntu环境下反编译android apk的方法

    2022-08-09 13:41:41
  • C#/Java连接sqlite与使用技巧

    2021-07-10 08:34:05
  • 一文带你了解C#中抽象方法与虚方法的区别

    2023-07-23 00:14:32
  • c#.net多线程编程教学——线程同步

    2021-12-27 06:03:50
  • Android 7.0 Nougat不得不知的11项新功能

    2021-06-12 22:50:07
  • c#基于WinForm的Socket实现简单的聊天室 IM

    2021-11-27 04:47:57
  • C#中Invoke的用法讲解

    2023-10-26 03:24:36
  • Minio与SpringBoot使用okhttp3问题解决

    2021-06-25 19:17:08
  • asp之家 软件编程 m.aspxhome.com