Spring boot + Mybatis Plus DatabaseId的使用
Mybatis中使用DatabaseId
Mybatis中如果需要對DatabaseId進行支持需要在配置 mybatis-config.xml 中加入如下配置
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle" />
</databaseIdProvider>
加入這段配置所我們就可以在mapper.xml中這麼使用了
<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="mysql">
select * from multil
</select>
<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="oracle">
select id from multil
</select>
那麼在Mybatis plus中應該怎麼用呢?
經過分析以上代碼可知,Mybatis中提供一個接口DatabaseIdProvider來做數據庫類型和sql中DatabaseId的映射,Mybatis通過上面的配置文件創建了一個實現DatabaseIdProvider的類並載入了映射配置,知道這一點就好辦了,我們只需要提供一個同樣的DatabaseIdProvider 實現類到Spring容器中應該就可以了,於是我在我的項目中加入了以下代碼:
/**
爲了配置管理我把這段代碼加入到了 MybatisPlusConfig 中
*/
@Bean
public DatabaseIdProvider databaseIdProvider() {
VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.put("Oracle","oracle");
properties.put("MySQL","mysql");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
在application.yml中加入(這一步不是必須的,Mybatis會根據配置的數據源來判斷數據庫類型從而來選擇使用哪個sql語句)
mybatis-plus:
mapper-locations: classpath*:com/alen/trial/multilds/dao/*.xml
global-config:
db-config:
# db-type: mysql
db-type: oracle
測試結果
首先使用oracle測試(注意這裏的數據源要修改成oracle的數據源)
爲了方便測試加入了以下接口
@GetMapping("/select/all")
public List<Multil> getDataFormMysqlA() {
return service.select();
}
使用mysql測試
對比一下配置
<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="mysql">
select * from multil
</select>
<select id="selectAll" resultType="com.alen.trial.multilds.model.Multil" databaseId="oracle">
select id from multil
</select>
沒有問題,就是亂碼了有點小瑕疵!