项目开始的时候我们使用的是MySQL,但是一些客户要求使用国产瀚高数据库,所以只能同时支持MySQL和瀚高数据库(兼容pg语法)。mybatis-plus可以使用databaseId的方式支持多数据库厂商。
MyBatis的方式
- 在
mybatis-config.xml
添加多数据库厂商支持
<databaseIdProvider type="DB_VENDOR">
<property name="Oracle" value="oracle"/>
<property name="MySQL" value="mysql"/>
<property name="DB2" value="d2"/>
<property name="PostgreSQL" value="pg"/>
</databaseIdProvider>
-
person_mapper.xml
:每一个SQL语句中添加databaseId mybatis搜索sql语句的时候,会搜索databaseId与当前数据库相同厂商的语句以及没有配置databaseId的语句
<mapper namespace="com.tenmao.mybatis.PersonMapper">
<select id="selectByPersonId" databaseId="mysql" resultType="com.tenmao.mybatis.Person">
SELECT * FROM person WHERE id=#{id}
</select>
<select id="selectByPersonId" databaseId="pg" resultType="com.tenmao.mybatis.Person">
SELECT * FROM person WHERE id=#{id}
</select>
</mapper>
MyBatisi-Plus的支持方式
上面在mybatis-config.xml
配置的方式在mybatis-plus不生效
- 使用Java bean的方式,返回
DatabaseIdProvider
@Bean
public DatabaseIdProvider databaseIdProvider() {
VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.put("Oracle","oracle");
properties.put("MySQL","mysql");
properties.put("PostgreSQL","pg");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
参考
- 瀚高数据库
- Spring boot Mybatis Plus DatabaseId的使用