本教程实现mybatis-plus对Gbase8s的分页查询效果的支持,原生Mybatis-plusb不支持,比如:MySQL、Oracle,DB2等(测试发现Gbase8s好像支持DB2部分语法)。
我使用的版本:
mybatis-plus版本:3.4.3.1
这里有个问题,mybatis-plus源码是gradle项目,没有学习过gradle的同学,可能有点麻烦,本人目前学习中....
研究了好久发现,其实mybatis-plus源码是gradle项目有可以打包为maven包的插件
只要需改相应位置的源码,找到打包插件就可以打包为maven包,放到本地仓库,然后需要的项目直接使用修改的版本即可
注:网上有很多方法,但改动都很大,改了好久也不好用,请使用最新版本的mybatis-plus源码包,最好项目使用的版本和你要修改的源码包版本一直,这样覆盖最小,省时省力
2.在下载的源码项目中重写同包同类名时,是需要修改mybatis-plus源代码中的相应类文件,在项目启动的过程中,则会优先加载项目里的代码而不是jar包里的(所以只适合与本地,但只是覆盖,不会改变源代码的哦)
3.在下载的源码项目中重写同包同类名文件,则要修改的mybatis-plus源码中的相应类文件,通过编译后替换解压的源代码中的class类文件,再重新打回jar包(适合本地或服务器,因为这是修改了源代码jar包)
其实比较推荐的,因为要重写相应的类文件,所以要记得引入修改的源文件打的jar包(*对应你下载的源码的版本*)
else if (jdbcUrl.contains(":gbasedbt-sqli:")){
return DbType.GBASE8S;
}
/**
* GBase8s
*/
GBASE8S("gbase8s", "南大通用安全数据库"),
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();
}
}
else if (dbType == DbType.GBASE8S) {
dialect = new GBase8sDialect();
}
在此需要修改的类文件有 DbType、JdbcUtils、DialectFactory同时新增一个支持Gbase8s方言的类GBase8sDialect。
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);
}