使用databaseId兼容不同厂商数据库SQL语句的不同写法或不同的函数用法
MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。
配置:
- Mybatis中使用DatabaseId
mybatis-config.xml 中加入如下配置:
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle" />
<property name="DM" value="dm" />
<property name="KingBaseES" value="kingbasees" />
</databaseIdProvider>
- Mybatis plus中使用DatabaseId
MybatisPlusConfig配置类中加入以下配置:
@Bean
public DatabaseIdProvider databaseIdProvider() {
VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.put("Oracle","oracle");
properties.put("MySQL","mysql");
properties.put("KingBaseES","kingbasees");
properties.put("DM","dm");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
在application.yml中指定数据库
mybatis-plus:
global-config:
db-config:
db-type: dm
使用:
在编写SQL语句中加入指定库名编写出对应不同厂商兼容的SQL语句
<select id="XXX" databaseId="dm">
.......
</select>
<select id="XXX" databaseId="kingbasees">
.......
</select>