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
改写 *
可参考路径 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库,直接运行,测试通过
来源:https://blog.csdn.net/qq_33935229/article/details/127918613
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java实现两人五子棋游戏(二) 画出棋盘
![](https://img.aspxhome.com/file/2023/3/63383_0s.png)
Java 回调callback举例详解
![](https://img.aspxhome.com/file/2023/2/59592_0s.png)
利用logback 设置不同包下的日志级别
Java 通过反射给实体类赋值操作
IntelliJ IDEA(2020.2)的下载、安装步骤详细教程
![](https://img.aspxhome.com/file/2023/0/59900_0s.png)
JVM Client和Server端有什么区别
![](https://img.aspxhome.com/file/2023/5/64385_0s.png)
spring-mybatis获取mapper的四种方式汇总
![](https://img.aspxhome.com/file/2023/3/59743_0s.jpg)
Spring BeanDefinition使用介绍
![](https://img.aspxhome.com/file/2023/5/59945_0s.png)
Java Scanner 类的使用小结
java中Class.forName的作用浅谈
java中transient关键字用法分析
Java实现五子棋(附详细源码)
![](https://img.aspxhome.com/file/2023/4/63384_0s.jpg)
WPF实现多运算符表达式计算器
![](https://img.aspxhome.com/file/2023/4/66574_0s.jpg)
IDEA安装后找不到.vmoptions文件的问题及解决
![](https://img.aspxhome.com/file/2023/5/58475_0s.png)
SpringBoot使用JWT实现登录验证的方法示例
![](https://img.aspxhome.com/file/2023/9/63689_0s.png)
Android布局之帧布局FrameLayout详解
![](https://img.aspxhome.com/file/2023/5/85985_0s.png)
Java如何定义Long类型
![](https://img.aspxhome.com/file/2023/6/62246_0s.png)
spring定义和装配bean详解
Java反射机制的简单讲解
![](https://img.aspxhome.com/file/2023/6/64796_0s.png)