【开发心得】springboot+mybatis对接翰高数据库及mysql数据库迁徙
媒介随着S3赛季的开启,信创化之路愈发加紧。国内出现了许多基于社区版mysql或者pgsql的优化版本的国产数据库。本文提到的翰高数据库基于pgsql实现(如存争议,可删除)。
引用某度百科的原文简介:
瀚高数据库引进了国际上最先进的开源数据库PostgreSQL内核技能,在此PostgreSQL社区版之上做了一系列的研发和优化。瀚高科技是中国最早致力于PostgreSQL数据库商业推广利用的专业化公司,在数据库方面有着丰富的开发、管理和培训履历。瀚高数据平台办理方案既可以为用户节省大量的数据库利用本钱,又可以为用户提供专业化的数据服务,从而团体提高用户IT部分的数据库利用程度。
资源分享
迁徙工具与可视化客户端分享,见文末。
工程对接(SpringBoot+Mybatis为例)
(1) pom依靠
<!-- https://mvnrepository.com/artifact/com.highgo/HgdbJdbc -->
<dependency>
<groupId>com.highgo</groupId>
<artifactId>HgdbJdbc</artifactId>
<version>6.2.4</version>
</dependency> (2) 数据库jdbc毗连
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.highgo.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:highgo://实际ip:实际端口号/库名(这里相当于名称空间)?currentSchema=约束名(mysql的数据库名),public&stringtype=unspecified&serverTimezone=Asia/Shanghai
username: 用户名
password: 密码
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1
testWhileIdle: false
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: 控制台用户名
login-password: 密码
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
数据库迁徙
(1) 从mysql 迁徙
工具: migration-4.1.4-2024-08-09(翰高提供,侵删)
解压zip后,找到migration/bin 点击start.bat或者对应cpu位数的exe步调。
https://i-blog.csdnimg.cn/direct/f86a27543d5c4ca6a375a15c7b7742da.png
主界面
https://i-blog.csdnimg.cn/direct/51ece5c2def343aab176cc0c885c19d0.png新建组
在组中新建翰高和mysql的毗连(其他也可以)
https://i-blog.csdnimg.cn/direct/26f38d5deab6438580c61807ff6f32fb.png
新建迁徙任务
https://i-blog.csdnimg.cn/direct/3cfca758526942df9c5b150e9d429831.png
选择源和目标
https://i-blog.csdnimg.cn/direct/9467117639734aacaa64c3c2ffb3f699.png
选择范围,下一步下一步即可。
迁徙过程中,工具给我们做了许多兼容。如果你的翰高数据库开启了mysql模式,而且执行这个工具的话,他会自动创建sequence,兼容mysql自增id的实现。
可视化工具毗连数据库
1. 企业版安全版
这个版本好像默认开启了SM3(国密3)的认证,因为我对接的版本是dba提供的,具体没有看到配置。
如果开启国密版本的认证了,那么navicat, sqlyog等工具默认是不支持的。
会报错: authentication method 13 not supported
网上听说有sm3的dll插件,可以给到navicat,至少我没找到免费的下载毗连。
这种情况,请利用dbeaver或者datagrip,这俩工具是支持自定义jar驱动的。
higo驱动中有sm3的痕迹,具体源码没有debug
https://i-blog.csdnimg.cn/direct/7fe27f464ba54f70946af3942ae0eb8c.png
那么就偶尔机了
第一种方式 dbeaver 自定义驱动毗连翰高数据库。
(1) 打开dbeaver,数据库-驱动管理器
https://i-blog.csdnimg.cn/direct/b9a0772a114d4892be9dc01c95e91814.png
(2) 驱动管理器-新建
https://i-blog.csdnimg.cn/direct/911a7506b54647a68d64b0a758f81702.png
(3) 填写毗连模板
毗连瀚高数据库:highgo
类名:com.highgo.jdbc.Driver
URL :jdbc:highgo://{host}[:{port}]/[{database}]
https://i-blog.csdnimg.cn/direct/a57e09c9ecfa4aacb9ac9b2f9513c428.png
下载而且加载驱动
https://mavenlibs.com/jar/file/com.highgo/HgdbJdbc
https://i-blog.csdnimg.cn/direct/1ead6200d8b246038058fc817f871e41.png
创建完之后,其他和新建正常的sql毗连没有多大区别。
https://i-blog.csdnimg.cn/direct/2f87733d86e84e4a9ac1ab9382cc18ce.png
毗连成功后,dbeaver的结构,会在外部库名(可以理解为名称空间)的基础上,另有一个"schema"名称(相当于mysql的数据库名称),然后才是表名,对于熟悉oracle或者pgsql的小同伴可能友好,但对于利用mysql和其他数据库的小同伴有点别扭。
https://i-blog.csdnimg.cn/direct/ddb2baf807724195b44badf0cd7476b0.png
第二种方式,直接利用翰高的 hgdbdeveloper-6.1.0-2024-04-22.zip(翰高提供,侵删)
新建毗连(注意,这里勾选是否为安全版,应该和利用利用sm3加密链接库有关系)
https://i-blog.csdnimg.cn/direct/db9a1aaaea824d088f47df836d13a11c.png
毗连后的截图,其他和利用dbever一类的数据库类似。
https://i-blog.csdnimg.cn/direct/1616b022e02c4165b1ee6707f5c3aaab.png
2. 未开启国密版本。
看成pgsql直接毗连即可,有其他博客表明,可以用navicat一类的工具直接毗连。
Mysql函数或语法兼容
函数直接创建出来就好
1. ifnull
create function ifnull(value anyelement, null_value anyelement) RETURNS anyelement AS
$$
BEGIN
if value is null then return null_value;
else return value;
end if;
END;
$$
LANGUAGE plpgsql; 2. find_in_set
CREATE OR REPLACE FUNCTION find_in_set(value text, col_name text)
RETURNS boolean AS $$
BEGIN
RETURN value = ANY(string_to_array(col_name, ','));
END;
$$ LANGUAGE plpgsql; 语法兼容
(1)pgsql有较强的语法验证:
operator does not exist: character = integer 办理方案,根据对应的报错提示去找字符和数字等的转换支持(mysql对比比较不敏感)
检察当前采用的模式:
alter system set compatible_db = 'mysql';
select pg_reload_conf();
(2) 自增id
举例子:
创建序列
CREATE SEQUENCE my_table_id_seq;
使表关联对应序列
CREATE TABLE my_table (
id INTEGER PRIMARY KEY DEFAULT NEXTVAL('my_table_id_seq'),
name VARCHAR(100),
data TEXT
);
可选,修改序列起点。(一般不直接修改,如果多次执行迁徙工具的迁徙,sequence并没有触发自增,最好是删除sequence重建)。
alter sequence s_seq restart with 2
(3) mybatis字段兼容
PSQLException: ERROR: could not determine data type of parameter $1
like concat('%', #{deptName}::text, '%')
资源链接(免责侵删):
migration-4.1.......等2个文件官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供migration-4.1.......等2个文件最新版正式版官方版绿色版下载,migration-4.1.......等2个文件安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83Ahttps://www.123865.com/s/07O0Vv-2V47A?提取码:mT26
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]