mybatis在国产数据库下使用databaseId

关于怎么配置databaseId很多教程都已经讲过了,具体配置在mybatisConfig如下

@Bean
    public DatabaseIdProvider databaseIdProvider() {
        VendorDatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties properties = new Properties();
        properties.put("MySql", "mysql");
        properties.put("ORACLE", "ORACLE");
        databaseIdProvider.setProperties(properties);
        return databaseIdProvider;
    }

但是在使用一些国产数据库的时候我们不知道它的数据库别名是什么,此时就需要我们去自己获取数据库的别名,具体代码如下:

public class TsDatabaseIdProvider implements DatabaseIdProvider {
    private Properties p=null;
    @Override
    public void setProperties(Properties properties) {
            this.p=properties;
    }

    @Override
    public String getDatabaseId(DataSource dataSource) throws SQLException {
        String dataName=dataSource.getConnection().getMetaData().getDatabaseProductName();
        String databaseId=(String) this.p.get(dataName);
        return databaseId;
    }
}
    @Bean
    public TsDatabaseIdProvider databaseIdProvider() {
        TsDatabaseIdProvider databaseIdProvider = new TsDatabaseIdProvider();
        Properties properties = new Properties();
        properties.put("DM DBMS", "dm");
        properties.put("KingbaseES", "kingbase");
        databaseIdProvider.setProperties(properties);
        return databaseIdProvider;
    }

将这些代码加入之后,我们在TsDatabaseIdProvider中的getDatabaseId打一个断点,然后启动项目,此时会进入断点,我们可以看到

 

dataName的值就是数据库的别名,我们将此值加入到mybatisConfig的配置中就可以使用此数据库的databaseId了

 

posted on 2022-06-01 10:29  多看多记多写  阅读(1792)  评论(0)    收藏  举报