在mybatis-plus中增加对GBase 8s的支持

在mybatis-plus 3.4.3.2版本之后已经增加了对GBase 8s的支持(使用GBASEDBT类型),在3.5.2版本中变更类型为GBASE8S。如果使用的是其它版本,按照以下进行修改。

mybatis-plus-annotation模块

1, 在 com.baomidou.mybatisplus.annotation.DbType.java 类中增加

    GBASEDBT("gbasedbt", "南大通用安全数据库(GBase 8s)"),

注册GBase 8s的数据库类型,名称为GBASEDBT

mybatis-plus-extension模块

1, 增加com.baomidou.mybatisplus.extension.plugins.pagination.dialects.GBasedbtDialect.java类

package com.baomidou.mybatisplus.extension.plugins.pagination.dialects;

import com.baomidou.mybatisplus.extension.plugins.pagination.DialectModel;

public class GBasedbtDialect implements IDialect {

    @Override
    public DialectModel buildPaginationSql(String originalSql, long offset, long limit) {
        StringBuilder sql = new StringBuilder(originalSql)
            .insert(6, " SKIP " + offset + " FIRST " + limit);
        return new DialectModel(sql.toString());
    }
}

2,在com.baomidou.mybatisplus.extension.plugins.pagination.DialectFactory.java类中增加

            } else if (dbType == DbType.GBASEDBT) {
                dialect = new GBasedbtDialect();

数据库类型GBASEDBT使用的方言类型

3,在com.baomidou.mybatisplus.extension.toolkit.JdbcUtils.java类中的getDbType(String jdbcUrl)中增加

        } else if (url.contains(":gbasedbt-sqli:") ) {
            return DbType.GBASEDBT;

JDBC类型注册

4,增加com.baomidou.mybatisplus.extension.incrementer.GBasedbtKeyGenerator.java类

package com.baomidou.mybatisplus.extension.incrementer;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;

public class GBasedbtKeyGenerator implements IKeyGenerator {

    @Override
    public String executeSql(String incrementerName) {
        return "SELECT " + incrementerName + ".NEXTVAL FROM DUAL";
    }

    @Override
    public DbType dbType() {
        return DbType.GBASEDBT;
    }
}

用于自增长类型

标签: GBase, mybatis-plus, GBasedbt, 分页

添加新评论