yunzhonmghe 2020-08-07
参考开源项目dynamic: https://github.com/baomidou/dynamic-datasource-spring-boot-starter
引入pom:
<!-- 动态数据源 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>2.5.4</version> </dependency>
配置文件yml中:
spring: autoconfigure: #自动化配置 例外处理 exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: type: com.alibaba.druid.pool.DruidDataSource #多数据源配置 dynamic: primary: db1 datasource: # 数据库1 db1: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://xxxx:3306/xxx?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai username: xxx password: xxxx # 数据库2 db2: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://xxxx:3306/xxx?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai username: xxx password: xxxx #dynamic - 公共配置 druid: initialSize: 5 minIdle: 5 maxActive: 30 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT ‘x‘ testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 filters: stat,wall,slf4j,config useGlobalDataSourceStat: true stat: log-slow-sql: true merge-sql: true slow-sql-millis: 10000
用法:在相应service类或方法上添加DS注解,如:
package com.tuijie.loanapi.service.impl; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tuijie.loanapi.mapper.TestUserMapper; import com.tuijie.loanapi.model.mysql.TestUser; import com.tuijie.loanapi.service.TestUserService; import org.springframework.stereotype.Service; /** * TestUserServiceImpl * 测试ServiceImpl * @version : */ @Service @DS("db2") public class TestUserServiceImpl extends ServiceImpl<TestUserMapper, TestUser> implements TestUserService { }