zoukankan      html  css  js  c++  java
  • springboot+dynamic多数据源配置

    TOC

    springboot+dynamic多数据源配置

    来源:https://mp.baomidou.com/guide/dynamic-datasource.html
    mybatis plus上整合多数据源用的就是这个

    dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。

    配置

    • pom
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
      <version>${version}</version>
    </dependency>

    例如

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.1.1</version>
    </dependency>
    
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>2.5.4</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.18</version>
    </dependency>
    • 配置数据源。
    spring:
      datasource:
      # 可以先在这里配置好通用的配置,比如
        druid:
          initial-size: 10
          max-active: 100
          min-idle: 3
          max-wait: 5000
          pool-prepared-statements: true
          max-pool-prepared-statement-per-connection-size: 100
        #dynamic开始多数据源配置
        dynamic:
          primary: master #设置默认的数据源或者数据源组,默认值即为master
          datasource:
            master:  # 数据源的名字:master
              username: root
              password: 123456
              driver-class-name: com.mysql.jdbc.Driver
              url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
            slave_1:   # 数据源的名字:slave_1
              username: root
              password: 123456
              driver-class-name: com.mysql.jdbc.Driver
              url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
            slave_2:
              username: root
              password: 123456
              driver-class-name: com.mysql.jdbc.Driver
              url: jdbc:mysql://xx.xx.xx.xx:3308/dynamic
           #......省略
           #以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
    • 主类修改

      启动的时候启动项目失败的话,需要配置

    import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
    //修改主类的SpringBootApplication注解
    @SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class) // mybatisplus配置动态数据源时,切记需要关闭自带的自动数据源配置

    使用

    使用@DS切换数据源。
    @DS可以注解在方法上和类上,同时存在方法注解优先于类上注解。

    免去了sql工厂的配置,直接使用@DS就可以注明是哪个数据源,超级方便,mybatis这种直接配置到Mapper层即可.

    注解 结果
    没有@DS 默认数据源
    @DS("dsName") dsName可以为组名也可以为具体某个库的名称
    @Service
    @DS("slave_2")
    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");
      }
    }




  • 相关阅读:
    [javase学习笔记]-8.7 静态代码块
    QT5.6 编译SQLServer驱动
    mnesia怎样改动表结构
    UVA 1541
    Topcoder SRM625 题解
    android自己定义渐变进度条
    显示vim当前颜色主题
    启动vim不加载.vimrc
    为ubuntu添加多媒体以及flash等等常用包
    linux c:关联变量的双for循环
  • 原文地址:https://www.cnblogs.com/ziyue7575/p/e97bcad8ed323602251ca3bd2b1a4457.html
Copyright © 2011-2022 走看看