spring boot druid mybatis 多資料來源配置
阿新 • • 發佈:2019-01-05
1.application.properties
spring.datasource.url = jdbc\:mysql\://192.168.1.1\:3306/business?autoRconnect\=true&useUnicode\=true&characterEncoding\=UTF8&zeroDateTimeBehavior\=convertToNull&allowMultiQueries=true spring.datasource.username = root spring.datasource.password = R4ydEq6+eNhAXKnjqn0nGTNTldnaoxuuwkWau+IO1I3FGXvXbH+gRzPlUGnjmgNNwic8PkfqkkKn1IeJ/laspg== spring.datasource.driver-class-name = com.mysql.jdbc.Driver spring.datasource.maxActive = 20 spring.datasource.initialSize = 5 spring.datasource.minIdle = 5 spring.datasource.maxWait = 60000 spring.datasource.timeBetweenEvictionRunsMillis = 60000 spring.datasource.minEvictableIdleTimeMillis = 300000 spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.validationQuery = SELECT 'x' spring.datasource.testWhileIdle = true spring.datasource.testOnBorrow = false spring.datasource.testOnReturn = false spring.datasource.poolPreparedStatements = true spring.datasource.filters = config,stat spring.datasource.connectionProperties = config.decrypt=true ######################################################## ###STOCK-DB spring.stock.datasource.url = jdbc\:mysql\://192.168.1.1\:3306/stock?autoRconnect\=true&useUnicode\=true&characterEncoding\=UTF8&zeroDateTimeBehavior\=convertToNull&allowMultiQueries=true spring.stock.datasource.username = root spring.stock.datasource.password = R4ydEq6+eNhAXKnjqn0nGTNTlffaoxiPwkWau+IO1I3FGXvXjjjgRzPlUGnjmgNNwic8PkfqBbKn1IeJ/laspg== spring.stock.datasource.driver-class-name = com.mysql.jdbc.Driver spring.stock.datasource.maxActive = 30 spring.stock.datasource.initialSize = 10 spring.stock.datasource.minIdle = 10 spring.stock.datasource.maxWait = 800 spring.stock.datasource.timeBetweenEvictionRunsMillis = 60000 spring.stock.datasource.minEvictableIdleTimeMillis = 300000 spring.stock.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.stock.datasource.validationQuery = SELECT 'x' spring.stock.datasource.testWhileIdle = true spring.stock.datasource.testOnBorrow = true spring.stock.datasource.testOnReturn = false spring.stock.datasource.poolPreparedStatements = true spring.stock.datasource.filters = config,stat spring.stock.datasource.queryTimeout=2500 spring.stock.datasource.connectionProperties = config.decrypt=true mybatis.config-location = classpath:mybatis/mybatisConfig.xml
2.DruidDBConfig.java
import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.sql.DataSource; @Configuration public class DruidDBConfig { private Logger logger=LoggerFactory.getLogger(DruidDBConfig.class); @Bean(name="dataSource") @ConfigurationProperties(prefix="spring.datasource") @Primary public DataSource dataSource() { return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build(); } @Bean(name="sqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean=new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/bussiness/*.xml")); return bean.getObject(); } @Bean(name="stockDataSource") @ConfigurationProperties(prefix="spring.stock.datasource") public DataSource stockDataSource() { return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build(); } @Bean(name="stockSqlSessionFactory") public SqlSessionFactory stockSqlSessionFactory(@Qualifier("stockDataSource") DataSource stockDataSource) throws Exception { SqlSessionFactoryBean bean=new SqlSessionFactoryBean(); bean.setDataSource(stockDataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/stock/*.xml")); return bean.getObject(); }
3.MyBatisConfig.java
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.TransactionManagementConfigurer; import javax.annotation.Resource; import javax.sql.DataSource; /** * MyBatis基礎配置 * */ @Configuration @AutoConfigureAfter(DruidDBConfig.class) @EnableTransactionManagement public class MyBatisConfig implements TransactionManagementConfigurer { @Resource DataSource dataSource; @Resource DataSource stockDataSource; @Bean @Override public PlatformTransactionManager annotationDrivenTransactionManager() { return new DataSourceTransactionManager(dataSource); } @Bean public PlatformTransactionManager annotation2DrivenTransactionManager() { return new DataSourceTransactionManager(stockDataSource); } }
4.MyBatisMapperScannerConfig.java
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer=new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
mapperScannerConfigurer.setBasePackage("com.shunwang.shop.back.dao.bussiness");
return mapperScannerConfigurer;
}
@Bean
public MapperScannerConfigurer mapperScannerStockConfigurer() {
MapperScannerConfigurer mapperStockScannerConfigurer=new MapperScannerConfigurer();
mapperStockScannerConfigurer.setSqlSessionFactoryBeanName("stockSqlSessionFactory");
mapperStockScannerConfigurer.setBasePackage("com.shunwang.shop.back.dao.stock");
return mapperStockScannerConfigurer;
}
}