Python 官方文档:入门教程 => 点击学习
目录需求实现方法法2实现20210423修改完善20210519完善20210528完善需求 实现mybatis-plus对gbase8s的分页效果支持,使切换数据库(如oracle
实现mybatis-plus对gbase8s的分页效果支持,使切换数据库(如oracle/Mysql/gbase8s)时同样分页插件代码一样实现分页效果。
mybatis-plus版本:3.3.2
修改Mybatis-plus源代码,重新打jar包,引用其作为项目依赖。
在项目中重写同包同类名的要修改的mybatis-plus源码中的类,在项目启动中,会优先加载项目里的代码而不是jar包里的(适合本地,只覆盖,不改变源代码)
在项目中重写同包同类名的要修改的mybatis-plus源码中的类,编译后替换解压的源代码中的class文件,再重新打回jar包(适合本地/linux服务器,修改了源代码jar包)
因为暂未接触gradle打包,所以本文介绍了方法2、方法3
因为要重写类,所以记得引入原mybatis-plus的jar包依赖
目录如图
修改JdbcUtils,在url判断中增加gbase8s判断
在DbType类中增加对应值
GBASE8S("gbase8s", "南大通用数据库"),
新增一个方言实现类GBase8sDialect
public class GBase8sDialect implements IDialect {
@Override
public DialectModel buildPaginationSql(String originalSql, long offset, long limit) {
Integer index = originalSql.toLowerCase().indexOf("select");
StringBuilder sql = new StringBuilder(originalSql);
sql.insert(index+6," skip " + FIRST_MARK + " first " + SECOND_MARK + " ");
return new DialectModel(sql.toString(), offset, limit).setConsumerChain();
}
}
在DialectReGIStry中增加
dialect_enum_map.put(DbType.GBASE8S, new GBase8sDialect());
合计需要修改的类有JdbcUtils、DialectRegistry、DbType,同时新增一个方言类GBase8sDialect。
上述情况有一个小bug:就是当该分页查询有多于2个参数(即不止分页参数)时,因为mp默认分页参数动态SQL参数匹配时在最后面,而Gbase8s的分页参数是最前面两个,所以出现参数位置匹配不正确的问题!当然,如果仅有两个分页参数则不影响
解决方案如下:
mappings.add(0,mappings.get(mappings.size()-2));
mappings.add(0,mappings.get(mappings.size()-1));
mappings.remove(mappings.size()-1);
mappings.remove(mappings.size()-1);
之前的情况完全适用于Gbase8s,但如果考虑多数据库情况下,例切换到Oracle,会因为最后两个参数位置改变导致参数有误,所以再次完善,把之前0423增加的代码改为如下:
if(dbType.equals(DbType.GBASE8S)){
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);
}
之前的代码在idea等本地开发环境上可以使用成功,但是当部署在Linux服务器上时,可能还是直接引用了mybatis-plus源代码,没有使用到编译后的覆盖内容,导致不支持gbase8s.完善内容原理如下:
jar cvf xxx.jar *
,会在当前目录下生成新的xxxjar包jar cvf mybatis-plus-extension-3.3.2.jar *
,会在当前目录下生成一个mybatis-plus-extension-3.3.2.jar包,把这个jar包替换maven库中的同名jar包即可!另一个jar包同理到此这篇关于Mybatis-plus支持Gbase8s分页的实现示例的文章就介绍到这了,更多相关Mybatis-plus Gbase8s分页 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Mybatis-plus支持Gbase8s分页的实现示例
本文链接: https://www.lsjlt.com/news/156802.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0