天天看點

Mybatis 相容多種資料庫(利用databaseId)

資料庫:達夢,Mysql

PS:目前方法僅支援靜态切換(每次切換需要重新開機服務)

增加配置類配置不同資料庫databaseId辨別

@Configuration
public class BeanConfig {

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

mapper.xml内寫法

指定連mysql時執行的SQL

<select id="test" databaseId="mysql" resultType="java.lang.Integer">
         select 1
    </select>
           

指定連達夢資料庫時執行的SQL

<select id="test" databaseId="dm" resultType="java.lang.Integer">
         select 1
    </select>
           

databaseId配置說明

mybatis在進行mapper注入時,會出現3種情況
 1.該sql的databaseId和目前資料源的databaseId一樣。
 2.該sql的databaseId和目前資料源的databaseId不一樣。
 3.該sql沒有配置databaseId

 當同一方法被找到多個sql時,會優先使用databaseId相同的sql
 如果沒有databaseId相同的sql,再使用沒有配置databaseId的sql
 databaseId不對應的sql是不會被使用