springboot集成@DS注解实现数据源切换的方法示例

作者:后台小白鼠 时间:2021-11-18 11:30:00 

启用@DS实现数据源切换

POM内添加核心jar包

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

yml配置

spring:
  datasource:
    #配置hikari连接池
    hikari:
      minimum-idle: 4
      maximum-pool-size: 16
      connection-timeout: 10000
      idle-timeout: 30000
      connection-init-sql: set names utf8mb4
    #动态数据源配置
    dynamic:
      #主数据源,默认启用
      primary: business
      datasource:
        #数据源1
        business:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/db_business?useUnicode=true&characterEncoding=utf-8
          username: ****
          password: ****
        #数据源2
        user:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/db_user?useUnicode=true&characterEncoding=utf-8
          username: ****
          password: ****
        #数据源3
        order:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/db_order?useUnicode=true&characterEncoding=utf-8
          username: ****
          password: ****

&ldquo;核心&rdquo;-使用@DS注解

使用@DS注解的核心是什么呢?

1.注解添加在dao.mapper上无效
2.注解添加到interface Service类上无效
3.注解添加到interface Service方法上无效

那么,此注解应该如何使用呢?

添加@DS注解到实现类或者实现类的方法上才可以

当注解添加到类上,意味着此类里的方法都使用此数据源;
当注解添加到方法上时,意味着此方法上使用的数据源优先级高于其他一切配置

@Service
@DS("slave")
public class UserServiceImpl implements UserService {

@Autowired
 private JdbcTemplate jdbcTemplate;

public List<Map<String, Object>> selectAll() {
   return  jdbcTemplate.queryForList("select * from user");
 }
 @Override
 @DS("slave_1")
 public List<Map<String, Object>> selectByCondition() {
   return  jdbcTemplate.queryForList("select * from user where age >10");
 }

最后

来源:https://blog.csdn.net/weixin_43975867/article/details/117250634

标签:springboot,@DS注解,数据源切换
0
投稿

猜你喜欢

  • 一文带你彻底理解Java序列化和反序列化

    2021-12-23 05:24:12
  • C#利用com操作excel释放进程的解决方法

    2022-08-02 07:01:28
  • Spring Boot集成MyBatis实现通用Mapper的配置及使用

    2023-07-03 18:17:10
  • Java中线程的等待与唤醒_动力节点Java学院整理

    2023-07-17 04:03:05
  • flutter实现扫码枪获取数据源禁止系统键盘弹窗示例详解

    2023-07-23 01:52:41
  • C#(.net)水印图片的生成完整实例

    2022-05-06 07:05:30
  • java 设计模式之单例模式

    2021-10-07 22:00:46
  • .net实现裁剪网站上传图片的方法

    2021-09-24 01:41:05
  • C#自定义RSA加密解密及RSA签名和验证类实例

    2023-08-08 17:48:11
  • C#动态生成DropDownList执行失败原因分析

    2023-08-30 22:37:28
  • Java实现求解一元n次多项式的方法示例

    2022-08-24 09:03:33
  • Android 全屏无标题栏的三种实现方法

    2022-01-05 03:01:31
  • C++封装静态链接库和使用的详细步骤

    2021-08-28 00:54:13
  • 分享实现Android图片选择的两种方式

    2023-06-28 05:09:27
  • Java中的字符串常量池详细介绍

    2023-03-08 09:16:41
  • 浅谈spring security入门

    2023-02-20 04:48:58
  • 用C# 实现鼠标框选效果的实现代码

    2023-04-18 14:08:26
  • SpringBoot常用注解详细整理

    2022-12-15 18:53:01
  • android跑马灯出现重复跳动以及不滚动问题的解决方法

    2023-07-24 00:33:48
  • C#实战之备忘录的制作详解

    2023-08-13 02:17:21
  • asp之家 软件编程 m.aspxhome.com