暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

JAVA连接GBase8s数据库配置

原创 南帝 2024-09-18
799

1. Maven库配置

在Maven 项目的 pom.xml 文件中添加gbasedbt依赖:

jdbc驱动已经提交到mvn中央仓库,包含351和220两个版本

<dependency>

    <groupId>com.gbasedbt</groupId>

    <artifactId>jdbc</artifactId>

    <version>3.5.1</version>

</dependency>

2. mybatis配置

2.1 mybatis-config.xml 配置参数

<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE configuration 

  PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 

  "http://mybatis.org/dtd/mybatis-3-config.dtd"> 

 

<!--

configuration(配置)

    properties(属性)

    settings(设置)

    typeAliases(类型别名)

    typeHandlers(类型处理器)

    objectFactory(对象工厂)

    plugins(插件)

    environments(环境配置)

        environment(环境变量)

        transactionManager(事务管理器)

        dataSource(数据源)

    databaseIdProvider(数据库厂商标识)

    mappers(映射器)

--> 

<configuration> 

    <!-- 数据库相关属性文件,这里不写的话,会自动加载 config.properties --> 

    <properties resource="db.properties"></properties> 

 

    <!-- 配置别名 --> 

    <typeAliases> 

        <typeAlias type="com.gbasedbt.mybatis.Student" alias="Student"/> 

    </typeAliases> 

     

    <!-- 配置以支持lvarchar -->

    <typeHandlers>

        <typeHandler handler="org.apache.ibatis.type.StringTypeHandler"

            jdbcType="LONGVARCHAR" javaType="String" />

    </typeHandlers>

       

    <!-- 环境配置 --> 

    <environments default="development"> 

        <environment id="development"> 

            <transactionManager type="JDBC"/> 

            <!-- 数据库连接相关配置 ,这里动态获取config.properties文件中的内容--> 

            <dataSource type="POOLED"> 

                <property name="driver" value="${driver}"/> 

                <property name="url" value="${url}"/> 

                <property name="username" value="${username}"/> 

                <property name="password" value="${password}"/> 

            </dataSource> 

        </environment> 

    </environments> 

     

    <!-- 0.映射文件 ,我们还没有,这里什么都不写--> 

    <!-- 1.映射文件 --> 

    <mappers> 

        <mapper resource="com/gbasedbt/mybatis/StudentMapper.xml"/> 

    </mappers> 

     

</configuration>

2.2 db.properties 配置数据库连接参数

driver=com.gbasedbt.jdbc.Driver

url=jdbc:gbasedbt-sqli://192.168.1.71:9088/mybatis:GBASEDBTSERVER=gbase01;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;IFX_LOCK_MODE_WAIT=10

username=gbasedbt

password=GBase123

==========================================

参数说明:

IP:PORT/数据库名

GBASEDBTSERVER 实例名

DB_LOCALE 数据库字符集

CLIENT_LOCALE 客户端字符集

IFX_LOCK_MODE_WAIT 锁等待时间

3. mybatis-plus配置

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

3.1 mybatis-plus-annotation模块

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

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

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

3.2 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());

    }

}

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

} else if (dbType == DbType.GBASEDBT) {

    dialect = new GBasedbtDialect();

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

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

} else if (url.contains(":gbasedbt-sqli:") ) {

    return DbType.GBASEDBT;

JDBC类型注册

  1. 增加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;

    }

}

参考:https://gbasedbt.com/index.php/category/java/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论