引入依赖:
<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version>
</dependency>
整体pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.2</version><relativePath/></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>2023_demo</name><description>2023_demo</description><properties><java.version>11</java.version></properties><dependencies><!-- starter start --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><!-- starter end --><!-- mybatis-plus自动生成 start --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version></dependency><!-- mybatis-plus自动生成 end --><!-- 动态数据源 start --><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version></dependency><!-- 动态数据源 end --><!-- aop切面 start --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!-- aop切面 end--><!-- 数据库连接池 start --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version></dependency><!-- 数据库连接池 end --><!-- mysql start --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- mysql end --><!-- swagger(openapi+knife) start --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.11</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-springdoc-ui</artifactId><version>3.0.3</version></dependency><!-- swagger(openapi+knife) end --><!-- 工具 start --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.1</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- excel导出 --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>17.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.68</version></dependency><!-- 工具 end --><!-- doc\pdf\excel互转 start --><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf.free</artifactId><version>5.1.0</version></dependency><dependency><groupId>e-iceblue</groupId><artifactId>spire.doc</artifactId><version>11.8.1</version></dependency><!-- doc\pdf\excel互转 end --></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build><repositories><repository><id>aliyun-repo</id><name>aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></repository><repository><id>com.e-iceblue</id><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository></repositories></project>
yml文件:
spring:profiles:active: devjackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8logging:level:com.example.demo.system.mapper: DEBUGcom.example.demo.bi.mapper: DEBUGmybatis-plus:mapper-locations: classpath*:mapper/**/*.xml #指定MyBatis映射的SQL文件目录global-config:db-config:#主键类型 AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";id-type: auto#驼峰下划线转换table-underline: trueconfiguration:map-underscore-to-camel-case: truecache-enabled: false
-dev.yml如下:
server:port: 18080spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源druid:filters: stat,slf4j#配置初始化大小、最小、最大线程数initial-size: 10min-idle: 10#CPU核数+1,也可以大些但不要超过20,数据库加锁时连接过多性能下降max-active: 20#最大等待时间max-wait: 60000#两次尝试间隔时间# timeBetweenEvictionRunsMillis: 600000#保持长连接keep-alive: true#配置一个连接在池中最大空间时间,单位是毫秒min-evictable-idle-time-millis: 600000#空闲时测试连接testWhileIdle: true#测试用SQLvalidation-query: select 1 from dualdatasource:master:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/local?serverTimezone=GMT%2B8&characterEncoding=utf-8username: rootpassword: 123456angel:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/angel?serverTimezone=GMT%2B8&characterEncoding=utf-8username: rootpassword: 123456springdoc:swagger-ui:enabled: truedoc-expansion: noneapi-docs:enabled: true
在serivceImpl实现类上添加注解:@DS
启动类上添加:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
启动类如下:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class},scanBasePackages={"com.example.demo.*"})
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}