最近公司有需求,需要对框架做oracle与mysql的兼容。由于框架以前一直是使用的oracle,现在需要做兼容,及是该框架同时支持oracle和mysql版本,oracle和mysql根据用户环境来选择,只需要切换数据库而不需要对代码做任何改动。
1. 自定义sql语句兼容。
这个实际上是mybatis支持的,在mybatismapper.xml中,所有标签都支持databaseId属性,这个属性就是你选择的所属的数据库的ID, 而标签ID不在为唯一属性,需要和databaseId联合唯一。这个比较简单,只需要在spring里自定义DatabaseIdProvider就可以设置databaseId了
/**
* 数据库兼容,在mybatis里设置相应的databaseId即可
*/
@Bean
public DatabaseIdProvider databaseIdProvider(){
DatabaseIdProvider databaseIdProvider=new VendorDatabaseIdProvider();
Properties properties=new Properties();
properties.setProperty("Oracle","oracle");
properties.setProperty("MySQL","mysql");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
<select id="getListCode" resultMap="codeMap"