SpringBoot项目配置多数据源
@Configuration
@EnableAutoConfiguration
@MapperScan(basePackages=DbConfig.PACKAGE,sqlSessionFactoryRef="moduleSqlSessionFactory")
public class DbConfig{
static final String PACKAGE="cn.mw.module.dao";
static final String MAPPING_LOCATION="calsspath*:mapper.module/*.xml";
@Value("${spring,datasource.url}")
private String url;
@Value("${spring,datasource.username}")
private String username;
@Value("${spring,datasource.password}")
private String password;
@Value("${spring,datasource.driverClassName}")
private String driverClassName;
/**在一个yml中配置
spring:
datesource:
url: jdbc:mysql://***
username: root
password: 123456
driverClassName: com.mysql.jdbc.Driver
*/
@Bean(name = "moduleDataSource")
public DataSource moduleDataSource() {
DruidDataSource datasource=new DruidDataSource();
datasource.setUrl(this.url);
datasource.setUsername(username);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
return datasource;
}
/**
或者有多个配置文件
@Bean(name = "moduleDataSource")
@ConfigurationProperties(prefix = "module.datesource")
public DataSource moduleDataSource() {
return DruidDateSourceBuilder.create().build();
}
*/
@Bean(name = "moduleTransactionManager")
public DataSourceTransactionManager moduleTransactionManager(@Qualifier("moduleDataSource") moduleDataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "moduleSqlSessionFactory")
public SqlSessionFactory basicSqlSessionFactory(@Qualifier("moduleDataSource") moduleDataSource moduleDataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(moduleDataSource);
factoryBean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources(DbConfig.MAPPER_LOCATION));
//设置数据库与实体类属性驼峰映射
factoryBean.getObject().getConfiguration().setMapUnderscoreYoCamelCase(true)
return factoryBean.getObject();
}
@Bean(name = "moduleSqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(
@Qualifier("moduleSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
多个数据源,在yml中配置多个连接数据库的参数以及多个配置类。
注意:连接的多个数据源采用的是不同的数据库,比如来源是mysql,sqlserver,如果采用pagehelper分页插件,在yml中加入
pagehelper: auto-runtime-dialect: true