mybatis-plus 配置多个数据源
数据源master
@Configuration
@MapperScan(basePackages = "com.xxx.mapper.master", sqlSessionFactoryRef = "masterSqlSessionFactory")
public class DongcaiDataSourceConfig {
@Bean(name = "masterDataSource")
@ConfigurationProperties(prefix = "spring.master.datasource")
public DruidDataSource masterDataSource() {
return new DruidDataSource();
}
@Bean(name = "masterSqlSessionFactory")
public SqlSessionFactory dongcaiSqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath*:mapping/master/*Mapper.xml"));
return bean.getObject();
}
@Bean(name = "masterSqlSessionTemplate")
public SqlSessionTemplate dongcaiSqlSessionTemplate(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
数据源 slave
@Configuration
@MapperScan(basePackages = "com.xxx.mapper.slave", sqlSessionFactoryRef = "slaveSqlSessionFactory")
public class DongcaiDataSourceConfig {
@Bean(name = "slaveDataSource")
@ConfigurationProperties(prefix = "spring.slave.datasource")
public DruidDataSource masterDataSource() {
return new DruidDataSource();
}
@Bean(name = "slaveSqlSessionFactory")
public SqlSessionFactory dongcaiSqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath*:mapping/slave/*Mapper.xml"));
return bean.getObject();
}
@Bean(name = "slaveSqlSessionTemplate")
public SqlSessionTemplate dongcaiSqlSessionTemplate(@Qualifier("slaveSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
注意,这里用 MybatisSqlSessionFactoryBean 而不是 SqlSessionFactoryBean!!
修改启动类,排除mybatis和mybatis-plus 自动装配
@SpringBootApplication(exclude = {MybatisPlusAutoConfiguration.class,MybatisAutoConfiguration.class})
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}