springboot整合mybatis使用一套程式切換不同的資料庫
阿新 • • 發佈:2019-01-07
因專案要求,需在滿足要求的時候mysql與oracle是鉅款進行切換,找到如下兩種方式進行切換:
一、更改配置檔案的掃描資訊,使用springboot需在配置檔案中配置mybatis的資訊,將mybatis的檔案掃描目錄進行變更即可,我的專案的命名規則是mapper底下的是mysql的xml檔案,oracle底下的是oracle的xml檔案。
mysql的配置資訊:
mybatis : mapper-locations: classpath:config/mybatis/mapper/**/*.xml type-aliases-package: com.etom.vc.admin.pojo.base configuration: map-underscore-to-camel-case: true
oracle的配置資訊:
mybatis :
mapper-locations: classpath:config/mybatis/oracle/**/*.xml
type-aliases-package: com.etom.vc.admin.pojo.base
configuration:
map-underscore-to-camel-case: true
二、使用同一份xml檔案,但是裡面寫兩個方法適用不同的資料庫
1、在啟動類配置bean檔案
@Bean public DatabaseIdProvider getDatabaseIdProvider(){ DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider(); Properties properties = new Properties(); properties.setProperty("Oracle","oracle"); properties.setProperty("MySQL","mysql"); databaseIdProvider.setProperties(properties); return databaseIdProvider; }
2、更改xml檔案
原xml檔案:
<mapper namespace="com.xxx.mapper" >
<select id="list" resultType="com.xxx.base.TestDemo">
SELECT * from test_demo
</select>
</mapper>
現xml檔案:方法名,引數型別以及返回型別都可不進行更改,只需加上databasrId為你配置的名稱型別,如沒新增databaseId名稱,則預設方法mysql資料庫和oracle資料庫通用,當專案啟用時,如果使用的是oracle則執行databaseId=”oracle”的語句,如果mysql值執行databaseId=”mysql”的語句
<mapper namespace="com.xxx.mapper" >
<select id="list" resultType="com.xxx.base.TestDemo" databaseId="mysql">
SELECT * from test_demo
</select>
<select id="list" resultType="com.xxx.base.TestDemo" databaseId="oracle">
SELECT * from test_demo
</select>
</mapper>
參考文獻:
[1]火柴盒zhang部落格,http://blog.csdn.net/likewindy/article/details/51396576