Springboot下mybatis如何配置databaseId

Springboot设置了mybatis.config-location,然后在mybatis-config.xml下配置了databaseIdProvider type="DB_VENDOR"









但是不会生效,调试发现初始化时由于Database是在application.propertities下定义的,mybatis初始化时会检测Environment是否为null,为null则不设置databaseId,在Spring下知道如何配置,但是SpringBoot下搞不定,求大神指点

有没有人同时用mysql和oracle 然后 databaseid 不会切换

把自动读取的 去掉 试试看。
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class})

然后import @ImportResource 你的xml

上面的回答是正确的:
@Bean
public DatabaseIdProvider getDatabaseIdProvider(){
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.setProperty("Oracle1","oracle");
properties.setProperty("MySQL","mysql");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}

    在项目中加上这个bean就OK。这里稍微补充下,
    mapper的xml中直接使用databaseId就可以了吗,如下:
    <select id="list" resultMap="user" databaseId="mysql">

    这里的databaseId的值使上面bean中配置的名字,可以自己定义。在properties配置文件中配置好需要用的数据库类型就好,不需要额外的配置、

数据源得有这个databaseid属性配置啊,不然数据源还是找到多个相同bean 会抛错

找到解决方法:需要手动注入一个bean
@Bean
public DatabaseIdProvider getDatabaseIdProvider() {
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties p = new Properties();
p.setProperty("Oracle", "oracle");
p.setProperty("MySQL", "mysql");
databaseIdProvider.setProperties(p);
return databaseIdProvider;
}