最近开发的项目又接到任务,原先数据库用的是postgres,现在要同时兼容oracle。虽然大部分的sql语句通用,但是还有许多语法存在差异,所以我们可以通过mybatis自身提供的databaseIdProvider解决这个问题。
pom文件和yml文件的配置略过******************
下面开始把databaseIdProvider注册到spring容器:
@Bean
public DatabaseIdProvider databaseIdProvider() {
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties p = new Properties();
//用到哪些数据库就在此设置,拼写一定要正确
p.setProperty("Oracle", "oracle");
p.setProperty("PostgreSQL", "postgresql");
databaseIdProvider.setProperties(p);
return databaseIdProvider;
}
然后就可以在mapper.xml中添加databaseId来判断
比如:
<select id="getXXX" databaseId="oracle"></select>
<select id="getXXX" databaseId="postgresql"></select>
当切换yml主文件profiles.active的配置连接不同的数据库时,xml就会自动识别切换到对应的sql语句,就实现了动态切换数据库功能了