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:#设置默认的数据源或者数据源组,默认值即为masterprimary: masterstrict: truedatasource:#这里采用了配置文件取值的方式,可以直接替换为数据库连接master:url: jdbc:postgresql://127.0.0.1:1921/check_dbusername: rootpassword: 123456driver-class-name: org.postgresql.Driver# 数据源2secondary:url: jdbc:postgresql://127.0.0.2:1921/check_dbusername: rootpassword: 123456driver-class-name: org.postgresql.Driverhikari:#连接池名pool-name: MyHikariCP#最小空闲数minimum-idle: 5#连接池最大数 默认是10maximum-pool-size: 100#空闲连接存活最大时间 默认:60000(10分钟)idle-timeout: 60000#此属性控制池中的最长生命周期,0: 表示无限生命周期,默认为1800000(30分钟)max-lifetime: 1800000#数据库连接超时时间默认30秒(30000)connection-timeout: 60000#此属性控制从池返回的链接默认自动提交行为,默认为trueauto-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,查询结果 :