springboot+dynamic+druid多数据源

详细版本

引入依赖

        <!-- druid -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.18</version>
		</dependency>

		<!--主从配置依赖 -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
			<version>2.4.2</version>
		</dependency>

添加druid配置和多数据源配置

# 默认数据源
spring.datasource.dynamic.primary=master

#生产======================================================================================================
##主库配置 master  本地MYSQL
spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=admin
spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.master.url=
#从库配置 chengyun
spring.datasource.dynamic.datasource.chengyun.username=root
spring.datasource.dynamic.datasource.chengyun.password=root@123456
spring.datasource.dynamic.datasource.chengyun.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.chengyun.url=

## druid连接池配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
##主库配置 master  
spring.datasource.dynamic.datasource.master.druid.initial-size=5
spring.datasource.dynamic.datasource.master.druid.max-active=20
spring.datasource.dynamic.datasource.master.druid.min-idle=5
spring.datasource.dynamic.datasource.master.druid.max-wait=60000
spring.datasource.dynamic.datasource.master.druid.min-evictable-idle-time-millis=300000
spring.datasource.dynamic.datasource.master.druid.max-evictable-idle-time-millis=300000
spring.datasource.dynamic.datasource.master.druid.time-between-eviction-runs-millis=60000
spring.datasource.dynamic.datasource.master.druid.validation-query=select 1 
spring.datasource.dynamic.datasource.master.druid.validation-query-timeout=-1
spring.datasource.dynamic.datasource.master.druid.test-on-borrow=false
spring.datasource.dynamic.datasource.master.druid.test-on-return=false
spring.datasource.dynamic.datasource.master.druid.test-while-idle=true
spring.datasource.dynamic.datasource.master.druid.pool-prepared-statements=true
spring.datasource.dynamic.datasource.master.druid.filters=stat,wall,log4j
spring.datasource.dynamic.datasource.master.druid.share-prepared-statements=true
# chengyun库配置 
spring.datasource.dynamic.datasource.chengyun.druid.initial-size=5
spring.datasource.dynamic.datasource.chengyun.druid.max-active=20
spring.datasource.dynamic.datasource.chengyun.druid.min-idle=5
spring.datasource.dynamic.datasource.chengyun.druid.max-wait=60000
spring.datasource.dynamic.datasource.chengyun.druid.min-evictable-idle-time-millis=300000
spring.datasource.dynamic.datasource.chengyun.druid.max-evictable-idle-time-millis=300000
spring.datasource.dynamic.datasource.chengyun.druid.time-between-eviction-runs-millis=60000
spring.datasource.dynamic.datasource.chengyun.druid.validation-query=select 1
spring.datasource.dynamic.datasource.chengyun.druid.validation-query-timeout=-1
spring.datasource.dynamic.datasource.chengyun.druid.test-on-borrow=false
spring.datasource.dynamic.datasource.chengyun.druid.test-on-return=false
spring.datasource.dynamic.datasource.chengyun.druid.test-while-idle=true
spring.datasource.dynamic.datasource.chengyun.druid.pool-prepared-statements=true
spring.datasource.dynamic.datasource.chengyun.druid.filters=stat,wall,log4j
spring.datasource.dynamic.datasource.chengyun.druid.share-prepared-statements=true

使用@DS注解表名某些Service用哪个数据源,不标注使用默认数据源

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我来详细介绍一下 SpringBoot+Dynamic 多数据源动态切换的实现方法。 1. 添加依赖 在 pom.xml 文件中添加以下依赖: ```xml <!-- MyBatis Plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <!-- Druid 数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> <!-- Dynamic DataSource --> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>2.5.3</version> </dependency> ``` 2. 配置数据源 在 application.yml 文件中配置数据源信息: ```yaml spring: datasource: druid: driver-class-name: com.mysql.jdbc.Driver initial-size: 5 max-active: 10 min-idle: 3 filters: stat,wall,slf4j # 主数据源 master: url: jdbc:mysql://localhost:3306/db_master?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC username: root password: 123456 # 从数据源 slave: url: jdbc:mysql://localhost:3306/db_slave?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC username: root password: 123456 ``` 3. 配置 DynamicDataSource 在 SpringBoot 启动类上添加 @EnableDynamicDataSource 注解,开启动态数据源功能: ```java @SpringBootApplication @EnableDynamicDataSource public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 4. 配置 MyBatis Plus 在 MyBatis Plus 的配置文件中添加以下配置: ```java @Configuration @MapperScan("com.example.demo.mapper") public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new DynamicTableNameInnerInterceptor(new TableNameParser() { @Override public String parse(String tableName) { // 根据业务需求动态返回表名 return tableName; } })); return interceptor; } } ``` 5. 编写动态数据源切换逻辑 在需要切换数据源的地方,通过 DynamicDataSourceContextHolder 切换数据源: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> getUserList() { // 切换到从数据源 DynamicDataSourceContextHolder.setDataSourceKey("slave"); List<User> userList = userMapper.selectList(null); // 切换回主数据源 DynamicDataSourceContextHolder.setDataSourceKey("master"); return userList; } } ``` 6. 测试 启动 SpringBoot 项目,调用 getUserList 方法,查看控制台输出日志,可以看到动态切换数据源的日志信息。 以上就是 SpringBoot+Dynamic 多数据源动态切换的详细实现方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值