国美金融贷款从Mysql和Oracle来看,他们虽然语法大体类似,但也存在则一些细节的差异。比如分组函数,mysql有concat_group,而oracle可以通过to_char(wm_concat())、listagg等实现;又比如mysql提供了"&","|","^"三种位运算,而oracle在位运算上只提供了bitand()函数。
国美金融贷款对于这些差异,我们希望在上层代码的调用上能屏蔽掉,依赖QueryDsl和JPA适配数据库的方言就可以实现。国美金融贷款必须针对数据库名称,建立用户名,赋予权限。否则即使国美金融贷款设置default_schema,hibernate在执行原生的sql时也会报错“com.kingbase8.util.KSQLException: 错误: 关系 "cms_base_content" 不存在”。例如国美金融贷款项目数据库名project_oa,则国美金融贷款必须使用用户名为project_oa连接。
国美金融贷款可以自定义封装一些函数,对外保持统一接口,通过区分不同的数据库环境,调用不同的函数模板,达到接口对上层调用透明的效果。