当前位置:主页 > java教程 > Mybatis-Plus GBase8s分页查询

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

发布:2023-03-03 17:00:01 59


为找教程的网友们整理了相关的编程文章,网友郁弘伟根据主题投稿了本篇教程内容,涉及到Mybatis-Plus、GBase8s分页查询、Mybatis-Plus、分页查询、Mybatis-Plus GBase8s分页查询相关内容,已被200网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

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分页查询内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • 使用mybatis-plus想要修改某字段为null问题

    发布:2023-03-27

    这篇文章主要介绍了使用mybatis-plus想要修改某字段为null问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • mybatis-plus支持null字段全量更新的两种方法

    发布:2023-03-25

    本文主要介绍了mybatis-plus支持null字段全量更新的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • Mybatis-Plus saveBatch()批量保存失效的解决

    发布:2023-03-08

    本文主要介绍了Mybatis-Plus saveBatch()批量保存失效的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • JPA与mybatis-plus不兼容问题的解决

    发布:2023-03-25

    本文主要介绍了JPA与mybatis-plus不兼容问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • Mybatis-plus出现数据库id很大或者为负数的解决

    发布:2023-03-24

    本文主要介绍了Mybatis-plus出现数据库id很大或者为负数的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • Mybatis-Plus自动填充示例代码

    发布:2020-03-22

    这篇文章主要介绍了Mybatis-Plus自动填充的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • MyBatis-Plus拦截器实现数据权限控制的示例

    发布:2023-03-25

    本文主要介绍了MyBatis-Plus拦截器实现数据权限控制的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • Mybatis-plus操作json字段实战教程

    发布:2023-04-14

    这篇文章主要介绍了Mybatis-plus操作json字段实战教程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


网友讨论