赞
踩
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:
因为刚开始做国产化适配,网上资源比较少,也比较杂,因此特意记录一下,希望对大家有帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。