背景:因为业务需求,需要整个项目除了适配oracle和mysql后还需要适配PostgreSQL,在此背景下就出现了一系列的问题。
踩坑一:databaseId
连接数据库后启动发现某些查询报错传入的sql参数是空,经过反复排查定位到对应的MyBaits的xml文件,我贴出原始的文件
文件中判断databaseid是mysql还是oracle来实现数据库语法的差异性,例如该查询语句为了防止未传入参数全库查询导致数据库cpu和io飙升而进行限制只返回1000条,然而上面databaseid这个参数由于PostgreSQL数据库返回的是PostgreSQL 导致走了一个空查询条件。
然后在xml中添加了postgresql最后发现还是没有匹配
最后跟踪代码找到了一个枚举类,配置了参数就映射否则返回空
修改了该类后让PostgreSQL映射成oracle该空sql报错解决。