內(nèi)容使用的是druidDataSource
首先壹瘟,在application.properties中配置數(shù)據(jù)源
spring.datasource.data1.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.data1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.data1.jdbc-url=jdbc:mysql://12.99.123.123:3306/db1?characterEncoding=UTF-8
spring.datasource.data1.username=root
spring.datasource.data1.password=123456
spring.datasource.data2.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.data2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.data2.jdbc-url=jdbc:mysql://12.99.123.123:3306/db2?characterEncoding=UTF-8
spring.datasource.data2.username=root
spring.datasource.data2.password=123456
注意:
為什么用的是jdbc-url和driver-class-name而不是url和driver-class
因?yàn)槿绻煤笳呖赡軙?huì)報(bào)錯(cuò):
jdbcUrl is required with driverClassName這個(gè)錯(cuò)誤
然后構(gòu)建兩個(gè)配置類
@Configuration
@MapperScan(basePackage="com.bsym.web.mapper.primary",sqlSessionFactory="data1SqlSessionFactory")
public class DataSourceConfig{
//返回db1數(shù)據(jù)庫的數(shù)據(jù)源(這個(gè)作為主庫)
@Bean(name="data1Source")
@ConfigurationProperties(prefix="spring.datasource.data1")
@Primary
public DataSource getDataSource(){
return DataSource.creater().build();
}
//返回db1數(shù)據(jù)庫的會(huì)話工廠
@Bean(name="data1SqlSessionFactory")
public SqlSessionFactory getSqlSessionFactory(@Qualifier("data1Source") DataSource dataSouorce)throws Exception{
SqlSessionFactory sqlSessionFactory = new SqlSessionFactory();
sqlSessionFactory.setDataSource(dataSource);
sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));//可以不寫逆皮,在properties中用mybatis配置mapper的掃描
sqlSessionFactory.setTypeAliasesPackage("com.bsym.web.entity");
return sqlSessionFactoryBean.getObject;
}
//返回db1數(shù)據(jù)庫的會(huì)話模板
@Bean(name="dataTemplate")
@Primary
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data1SqlSessionFactory")SqlSessionFactory ssf)throws Expection{
return new SqlSessionTemplate(ssf);
}
//返回db1數(shù)據(jù)庫的事務(wù)
@Bean(name = "data1TransactionManager")
@Primary
public DataSourceTransactionManager transactionManager(@Qualifier("data1Source")DataSource dataSource){
return new DataSourceTransactionManager(dataSource)
}
}
@Configuration
@MapperScan(basePackage="com.bsym.web.mapper.second",sqlSessionFactory="data2SqlSessionFactory")
public class Data2SourceConfig{
//返回db1數(shù)據(jù)庫的數(shù)據(jù)源(這個(gè)作為主庫)
@Bean(name="data2Source")
@ConfigurationProperties(prefix="spring.datasource.data2")
public DataSource getDataSource(){
return DataSource.creater().build();
}
//返回db2數(shù)據(jù)庫的會(huì)話工廠
@Bean(name="data2SqlSessionFactory")
public SqlSessionFactory getSqlSessionFactory(@Qualifier("data2Source") DataSource dataSouorce)throws Exception{
SqlSessionFactory sqlSessionFactory = new SqlSessionFactory();
sqlSessionFactory.setDataSource(dataSource);
sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));//可以不寫,在properties中用mybatis配置mapper的掃描
sqlSessionFactory.setTypeAliasesPackage("com.bsym.web.entity");
return sqlSessionFactoryBean.getObject;
}
//返回db1數(shù)據(jù)庫的會(huì)話模板
@Bean(name="data2Template")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("data2SqlSessionFactory")SqlSessionFactory ssf)throws Expection{
return new SqlSessionTemplate(ssf);
}
//返回db2數(shù)據(jù)庫的事務(wù)
@Bean(name = "data1TransactionManager")
public DataSourceTransactionManager transactionManager(@Qualifier("data2Source")DataSource dataSource){
return new DataSourceTransactionManager(dataSource)
}
}
配置完成后就可以啟動(dòng)了