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");
  }
}





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM