1、首先在application.properties文件中配置数据源信息(以下的可作为参考)
#dev datasource
dev.datasource.driverClassName=com.mysql.jdbc.Driver
dev.datasource.jdbcUrl=jdbc:mysql://localhost:3306/dev?useUnicode=true&characterEncoding=utf-8&useSSL=false
dev.datasource.username=root
dev.datasource.password=root
#online datasource
online.spring.datasource.driverClassName=com.mysql.jdbc.Driver
online.spring.datasource.jdbcUrl=jdbc:mysql://localhost:3306/online?useUnicode=true&characterEncoding=utf-8&useSSL=false
online.spring.datasource.username=root
online.spring.datasource.password=root
我这里是oracle数据库,所以配置信息跟mysql、sqlserver数据库jdbc.Url长得不一样,
2、下面我们创建一个DbConfigModel.java来读取配置信息
public class DBConfigModel {
private String driverClassName;
private String jdbcUrl;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getJdbcUrl() {
return jdbcUrl;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3、下面我们来配置两个DbConfigModel 来保存两个数据源配置信息
@Configuration
public class ConfigurationBeans {
@Bean(name = "devDBConfigModel")
@ConfigurationProperties(prefix = "dev.spring.datasource")
public DBConfigModel devDBConfigModel() {
return new DBConfigModel();
}
@Bean(name = "onlineDBConfigModel")
@ConfigurationProperties(prefix = "online.spring.datasource")
public DBConfigModel onlineDBConfigModel() {
return new DBConfigModel();
}
}
4、接下来我们来配置比较关键的配置信息,我就把全部的代码拷出来
@Configuration
@MapperScan(basePackages = "com.*****.dao.mapper", sqlSessionFactoryRef = "devSqlSessionFactory")
public class DevDataSourceConfig {
/**
* dataSource
* @return
*/
@Bean(name = "devDataSource")
public DataSource dataSource(@Qualifier("devDbConfigModel") DBConfigModel dbConfigModel) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(dbConfigModel.getDriverClassName());
dataSource.setUrl(dbConfigModel.getJdbcUrl());
dataSource.setUsername(dbConfigModel.getUsername());
dataSource.setPassword(dbConfigModel.getPassword());
dataSource.setInitialSize(1);
dataSource.setMaxActive(10);
dataSource.setMinIdle(1);
dataSource.setMaxWait(60 * 1000);
dataSource.setTimeBetweenEvictionRunsMillis(60 * 1000);
dataSource.setMinEvictableIdleTimeMillis(300 * 1000);
dataSource.setTestWhileIdle(true);
return dataSource;
}
/**
* sqlSessionFactory
* @param dataSource
* @return
* @throws Exception
*/
@Bean("devSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("devDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setTypeAliasesPackage("com.qt.scs.admin.dao.entity");
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return bean.getObject();
}
/**
* 事务管理器
* @param dataSource
* @return
*/
@Bean(name="devTransactionManager")
public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("devDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
/**
* sqlSessionTemplate
* @param sqlSessionFactory
* @return
*/
@Bean(name="devSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("devSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
5、online的相关配置信息
@Configuration
@MapperScan(basePackages = "com.****.dao.onlineMapper", sqlSessionFactoryRef = "onlineSqlSessionFactory")
public class OnlineDataSourceConfig {
/**
* dataSource
* @return
*/
@Bean(name = "onlineDataSource")
public DataSource dataSource(@Qualifier("onlineDbConfigModel") DBConfigModel dbConfigModel) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(dbConfigModel.getDriverClassName());
dataSource.setUrl(dbConfigModel.getJdbcUrl());
dataSource.setUsername(dbConfigModel.getUsername());
dataSource.setPassword(dbConfigModel.getPassword());
dataSource.setInitialSize(1);
dataSource.setMaxActive(10);
dataSource.setMinIdle(1);
dataSource.setMaxWait(60 * 1000);
dataSource.setTimeBetweenEvictionRunsMillis(60 * 1000);
dataSource.setMinEvictableIdleTimeMillis(300 * 1000);
dataSource.setTestWhileIdle(true);
return dataSource;
}
/**
* sqlSessionFactory
* @param dataSource
* @return
* @throws Exception
*/
@Bean("onlineSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("onlineDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setTypeAliasesPackage("com.qt.scs.admin.dao.entity");
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:onlineMapper/*.xml"));
return bean.getObject();
}
/**
* 事务管理器
* @param dataSource
* @return
*/
@Bean(name="onlineTransactionManager")
public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("onlineDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
/**
* sqlSessionTemplate
* @param sqlSessionFactory
* @return
*/
@Bean(name="onlineSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("onlineSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
5、最后springboot启动类配置
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}