1、建立连接数据源的bean配置
/** * 数据源配置 */ @Configuration public class MultiDataSourceConfig { @Bean(name = "mojorDB") //主数据源 @Qualifier("mojorDB") @ConfigurationProperties(prefix = "mojordb.datasource") //读取yml配置,初始化数据源 public DataSource wxBankDB() { return DataSourceBuilder.create().build(); } @Bean(name = "subDB") //另一个数据源 @Qualifier("subDB") @ConfigurationProperties(prefix = "subdb.datasource") //读取yml配置,初始化数据源 public DataSource mobileBankDB() { return DataSourceBuilder.create().build(); } }
2、yml 配置
mojordb: datasource: jdbc-url: jdbc:oracle:thin:@//localhost:1521/orcl username: leo password: leo driverClassName: oracle.jdbc.OracleDriver maximumPoolSize: 30 idleTimeout: 10000 subdb: datasource: jdbc-url: jdbc:oracle:thin:@//localhost:1521/sub username: messi password: messi driverClassName: oracle.jdbc.OracleDriver maximumPoolSize: 10 idleTimeout: 10000
3、配置数据源工厂,事务管理器,mapper扫描路径,及SqlSessionTemplate
@Configuration @MapperScan(basePackages = "com.leo.base.annotation.dao.mapper", sqlSessionTemplateRef = "majorDBSqlSessionTemplate") public class WXDBSqlSessionTemplate { @Bean(name = "majorDBSqlSessionFactory") @Primary public SqlSessionFactory primarySqlSessionFactory(@Qualifier("majorDB") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/leo/*/*.xml")); //分页插件 PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("reasonable", "true"); properties.setProperty("supportMethodsArguments", "true"); properties.setProperty("returnPageInfo", "check"); properties.setProperty("params", "count=countSql"); pageHelper.setProperties(properties); //添加插件 bean.setPlugins(new Interceptor[]{pageHelper}); return bean.getObject(); } //配置声明式事务管理器 @Bean(name = "majorDBTransactionManager") @Primary public PlatformTransactionManager primaryTransactionManager(@Qualifier("majorDB") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "majorDBSqlSessionTemplate") @Primary public SqlSessionTemplate primarySqlSessionTemplate( @Qualifier("majorDBSqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } }