步骤
1、在springboot的启动类的@SpringBootApplication中去除默认的DataSourceAutoConfiguration.class数据源配置类
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
2、编写自定义的DataSourceConfig类
@Configuration
public class DataSourceConfig {
@Bean(name = "DataSourceA")
@ConfigurationProperties(prefix = "spring.datasourcea") // application.properteis中对应属性的前缀
public DataSource dataSource1() {
return DataSourceBuilder.create().build();
}
@Bean(name = "DataSourceB")
@ConfigurationProperties(prefix = "spring.datasourceb") // application.properteis中对应属性的前缀
public DataSource dataSource2() {
return DataSourceBuilder.create().build();
}
}
3、编写mybatis配置类
@Configuration
@MapperScan(basePackages = "com.mybatis.idao",sqlSessionFactoryRef = "sqlSessionFactory1")
public class MybatisDbAConfig {
@Autowired
//表示注入哪个类
@Qualifier("DataSourceA")
private DataSource dataSource;
@Bean
public SqlSessionFactory sqlSessionFactory1() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
factoryBean.setMapperLocations(resolver.getResources("classpath:mybatis_mapper/*.xml"));
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate1() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory1()); // 使用上面配置的Factory
return template;
}
}
其他数据源配置相类似
注意事项
1、配置多个数据源的时候,注意多个数据源的的Interface和*mapper.xml应该在不同的包或文件夹下,这样使用@MapperScan进行扫描的时候会不出现,not to bound的错误。