1. 程式人生 > 其它 >SpringBoot中如何配置MyBatis動態識別資料庫連線(DatabaseIdProvider的簡單使用方式)

SpringBoot中如何配置MyBatis動態識別資料庫連線(DatabaseIdProvider的簡單使用方式)

技術標籤:Spring資料庫java

在使用mybatis過程,如果有這樣的需求:動態切換資料庫,如在MySQL、PostgreSQL與Oracle之間進行切換,並使用同一個Dao介面。如何進行同一個函式呼叫mapper中不同的sql語句
答案就是使用 DatabaseIdProvider 進行配置
步驟一:
在@Configuration標註的類中增加一個Bean:DatabaseIdProvider

@Bean
public DatabaseIdProvider getDatabaseIdProvider() {
    DatabaseIdProvider databaseIdProvider =
new VendorDatabaseIdProvider(); Properties p = new Properties(); p.setProperty("PostgreSQL", "postgresql"); p.setProperty("MySQL", "mysql"); databaseIdProvider.setProperties(p); return databaseIdProvider; }

步驟二:在Mapper中用以下方法寫SQL語句

<select
id="queryAllTablesFromDataBase" resultType="map" databaseId="mysql">
show tables; </select> <select id="queryAllTablesFromDataBase" resultType="map" databaseId="postgresql"> SELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg%' AND tablename NOT LIKE 'sql_%' </
select
>

最重要的就是這個databaseId,它區分了不同的資料庫
這樣在呼叫這個queryAllTablesFromDataBase的時候就會去找當前連線的資料庫對應的sql語句