数据库:达梦,Mysql

PS:当前方法仅支持静态切换(每次切换需要重启服务)

增加配置类配置不同数据库databaseId标识

@Configuration
public class BeanConfig {

    @Bean
    public DatabaseIdProvider getDatabaseIdProvider() {
        DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties p = new Properties();
        //厂商标识对应databaseId
        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是不会被使用

厂商标识查看方法

数据库driver包DatabaseMetaData类中找到getDatabaseProductName方法即可查看厂商标识

例如mysql

达梦

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐