1. 程式人生 > >springboot整合mybatis使用一套程式切換不同的資料庫

springboot整合mybatis使用一套程式切換不同的資料庫

因專案要求,需在滿足要求的時候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