当前位置:   article > 正文

SpringBoot集成Druid连接池,配置多数据源_druiddatasourcebuilder.create().build()

druiddatasourcebuilder.create().build()

1、配置application.yml文件

  1. spring:
  2. datasource:
  3. type: com.alibaba.druid.pool.DruidDataSource
  4. druid:
  5. # 数据库链接 [主数据源]
  6. main:
  7. url: jdbc:oracle:thin:@主机:端口号:ORCL
  8. username:
  9. password:
  10. driverClassName: oracle.jdbc.driver.OracleDriver
  11. # 初始化连接个数
  12. initialSize: 10
  13. # 最小连接池数量
  14. minIdle: 10
  15. # 最大连接池数量
  16. maxActive: 50
  17. # 获取连接时最大等待时间,单位毫秒
  18. maxWait: 60000
  19. timeBetweenEvictionRunsMillis: 60000
  20. # 连接保持空闲而不被驱逐的最小时间
  21. minEvictableIdleTimeMillis: 300000
  22. poolPreparedStatements: true
  23. maxPoolPreparedStatementPerConnectionSize: 20
  24. maxOpenPreparedStatements: 20
  25. validationQuery: SELECT 'x' FROM DUAL
  26. testWhileIdle: true
  27. testOnBorrow: true
  28. testOnReturn: true
  29. connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  30. # 开启监控统计信息
  31. filters: stat,wall
  32. useGlobalDataSourceStat: true
  33. keep-alive: true
  34. # 数据库链接 [从数据源]
  35. slave:
  36. url: jdbc:oracle:thin:@主机:端口号:ORCL
  37. username:
  38. password:
  39. driverClassName: oracle.jdbc.driver.OracleDriver
  40. # 初始化连接个数
  41. initialSize: 10
  42. # 最小连接池数量
  43. minIdle: 10
  44. # 最大连接池数量
  45. maxActive: 50
  46. # 获取连接时最大等待时间,单位毫秒
  47. maxWait: 60000
  48. timeBetweenEvictionRunsMillis: 60000
  49. # 连接保持空闲而不被驱逐的最小时间
  50. minEvictableIdleTimeMillis: 300000
  51. poolPreparedStatements: true
  52. maxPoolPreparedStatementPerConnectionSize: 20
  53. maxOpenPreparedStatements: 20
  54. validationQuery: SELECT 'x' FROM DUAL
  55. testWhileIdle: true
  56. testOnBorrow: true
  57. testOnReturn: true
  58. connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  59. # 开启监控统计信息
  60. filters: stat,wall
  61. useGlobalDataSourceStat: true
  62. keep-alive: true

2、配置DatasourceConfig类

  1. @Configuration
  2. public class DatasourceConfig {
  3. @Bean(initMethod = "init", destroyMethod = "close")
  4. @ConfigurationProperties(prefix = "spring.datasource.druid.slave")
  5. public DataSource spcDataSource(DynamicDataSource dynamicDataSource) {
  6. DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
  7. Map<Object, Object> targetDataSources = dynamicDataSource.getTargetDataSources();
  8. //50代表:数据源标志
  9. targetDataSources.put(50,dataSource);
  10. dynamicDataSource.setTargetDataSources(targetDataSources);
  11. return dataSource;
  12. }
  13. }

3、实现类上方配置注解

  1. //数据源标识
  2. @MyDataSource(50)
  3. @Service
  4. public class TestServiceImpl extends ServiceImpl<TestMapper, TestEntity> implements TestService {
  5. }

4、从库数据操作

  1. //数据源标识
  2. @MyDataSource(50)
  3. @Service
  4. public class TestServiceImpl extends ServiceImpl<TestMapper, StudentEntity> implements TestService {
  5. @Autowired
  6. private TestMapper mapper;
  7. @Override
  8. public List<StudentEntity> getStudentById(String id) {
  9. if (StringUtils.isEmpty(id)) {
  10. return null;
  11. }
  12. List<StudentEntity> list = this.mapper.getStudentById(id);
  13. return list;
  14. }
  15. //保存数据到从数据库时,一定要配置@Transactional
  16. @Override
  17. @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
  18. public void saveStudentEntity(StudentEntity studentEntity) {
  19. this.save(StudentEntity);
  20. }
  21. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/52386
推荐阅读
相关标签
  

闽ICP备14008679号