建立多个数据源
application.yml
datasource1:
jdbc-url: jdbc:mysql://localhost:3306/tableName1?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
datasource2:
jdbc-url: jdbc:mysql://localhost:3306/tableName2?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
datasource3:
jdbc-url: jdbc:mysql://localhost:3306/tableName3?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
datasource4:
jdbc-url: jdbc:mysql://localhost:3306/tableName4?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
数据资源注入DataSource中
@Configuration
public class DataSourceConfig {
@Bean(name = "dbOneDataSource")
@Primary
@ConfigurationProperties(prefix = "datasource1") // application.properteis中对应属性的前缀
public DataSource dbOneDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dbTwoDataSource")
@ConfigurationProperties(prefix = "datasource2") // application.properteis中对应属性的前缀
public DataSource dbTwoDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dbThreeDataSource")
@ConfigurationProperties(prefix = "datasource3") // application.properteis中对应属性的前缀
public DataSource dbThreeDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dbFourDataSource")
@ConfigurationProperties(prefix = "datasource4") // application.properteis中对应属性的前缀
public DataSource dbFourDataSource() {
return DataSourceBuilder.create().build();
}
}
配置数据源与对应接口映射
public class MybatisConfig {
@Configuration
@MapperScan(basePackages = {"com.xxx.ceshi.mapper.useraction"},
sqlSessionFactoryRef = "sqlSessionFactoryFour",
sqlSessionTemplateRef ="sqlSessionTemplateFour" )
public static class DBFour{
@Resource
DataSource dbFourDataSource;
@Bean
public SqlSessionFactory sqlSessionFactoryFour() throws Exception {
System.out.println("datasource4配置");
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dbFourDataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/useraction/*.xml"));
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplateFour() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryFour()); // 使用上面配置的Factory
return template;
}
}
}
这里MapperScan里面的路径填写 该数据源 对应的mapper接口的包名
getResources里面填写的是 resources 资源中对应的xml文件 路径名
我这里就写一个 其他三个 一样 改的就是对应包名和对应的类名和方法名