1.导入依赖jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.5</version>
</dependency>
<dependency>
<groupId>net.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<!--多数据源-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
2.配置nacos或者本地yml数据库信息
spring:
# 配置数据源信息
datasource:
dynamic:
#设置默认的数据源或者数据源组,默认值即为master
primary: master
strict: true
datasource:
#这里采用了配置文件取值的方式,可以直接替换为数据库连接
master:
url: jdbc:postgresql://127.0.0.1:1921/check_db
username: root
password: 123456
driver-class-name: org.postgresql.Driver
# 数据源2
secondary:
url: jdbc:postgresql://127.0.0.2:1921/check_db
username: root
password: 123456
driver-class-name: org.postgresql.Driver
hikari:
#连接池名
pool-name: MyHikariCP
#最小空闲数
minimum-idle: 5
#连接池最大数 默认是10
maximum-pool-size: 100
#空闲连接存活最大时间 默认:60000(10分钟)
idle-timeout: 60000
#此属性控制池中的最长生命周期,0: 表示无限生命周期,默认为1800000(30分钟)
max-lifetime: 1800000
#数据库连接超时时间默认30秒(30000)
connection-timeout: 60000
#此属性控制从池返回的链接默认自动提交行为,默认为true
auto-commit: true
3.代码使用说明:@DS注解
注意: 1. @DS注解支持ServiceImpl,或者mapper上,暂不支持Service接口上的@DS注解
2. 注解加到ServiceImpl类上 --> 类里的方法都使用此数据源
3. 不加@DS注解,使用默认数据源,默认值master数据源(对于已有代码无感知使用mater库)
可以注解在方法上或类上,同时存在就近原则 【方法上注解】 优先于 【类上注解】:
此时使用secondary从库进行数据操作:
虽然service类使用了mater 主库,但是getReportByTaskId 方法使用了 @DS("secondary") ,根据方法上使用的数据源优先级高于其他一切配置原则,该方法使用了从库进行数据操作。
3.验证结果:
一样的参数,数据源1,查询结果 :
一样的参数,数据源2,查询结果 :