国产化数据库适配(人大金仓)

本文主要是为了记录在系统做国产化适配过程中出现的问题,主要是数据库适配(Mysql和人大金仓),全是干货,多的话就不说了,直接上代码。

sql语句的适配:

我们系统集成的是mybatisplus,它有一个DatabaseIdProvider接口,这个可以做sql的切换,我们增加一个具体的MybatisPlusConfig配置类,然后自定义初始化一个DatabaseIdProvider对象,即可完成对多个数据库切换。具体步骤如下:

第一步:

图中的KingbaseES这个建议自己调试一下,具体获取的地方在这里:

第二步:在mapper.xml上有一个属性databaseId,这个属性就指定我们上面配置的properties,就完成了对不同数据库的sql切换,具体如下:

以上两个步骤我们就完成了对mysql和人大金仓的双数据库的适配,接下来是一些和mysql不一样的语法,我就说一下我遇到的几个比较特别的问题吧,你们有多的问题可以参考人大金仓的官方文档(个人感觉官方文档。。。。)

第一个不同的地方,查询当前数据库的sql语句和mysql不一样:

mysql:select database();
人大金仓:select current_database() from sys_database limit 1;

第二个不同的地方,这个我当时也看了官方文档半天才发现的,也比较有意思,在我们mysql里面主键自增这个我就不用多说了,应该大家都知道了,但是在人大金仓里面这个就有点不一样了,它的自增是借助于这个函数的nextval,这个函数要使用必须要提前创建一个序列,所以如果你需要建立一个自增主键的表,那么语句是这样子的:

注意一下我框住的地方,而且这里需要注意一下,序列是唯一的,不能重复,如果你对这张表进行了复制或者改名字,序列引用会一直存在,并且在程序中你也能使用修改名字后的表(尤其需要注意),以上就是我集成人大金仓遇到的比较有趣的地方,最后还有一个也备注说明一下,人大金仓的方言和mysql的方言也有点不太一样,目前我发现的就是分页那里有点问题,因此需要自定义一个bean:

因为刚开始做国产化适配,网上资源比较少,也比较杂,因此特意记录一下,希望对大家有帮助。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值