<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                <p align="center"> <strong>一個基于springboot的快速集成多數據源的啟動器</strong> </p> <p align="center"> <a > <img src="https://github.com/baomidou/dynamic-datasource-spring-boot-starter/workflows/CodeQL/badge.svg?branch=master" > </a> <a> <img src="https://badgen.net/github/stars/baomidou/dynamic-datasource-spring-boot-starter" > </a> <a href="https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter" target="_blank"> <img src="https://img.shields.io/maven-central/v/com.baomidou/dynamic-datasource-spring-boot-starter.svg" > </a> <a href="https://www.apache.org/licenses/LICENSE-2.0.html" target="_blank"> <img src="https://img.shields.io/:license-apache-brightgreen.svg" > </a> <a> <img src="https://img.shields.io/badge/JDK-1.7+-green.svg" > </a> <a> <img src="https://img.shields.io/badge/springBoot-1.5.x__2.x.x__3.x.x-green.svg" > </a> <a href="https://www.jetbrains.com"> <img src="https://img.shields.io/badge/IntelliJ%20IDEA-support-blue.svg" > </a> <a> <img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" > </a> <a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=ded31006508b57d2d732c81266dd2c26e33283f84464e2c294309d90b9674992"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="dynamic-sring-boot-starter" title="dynamic-sring-boot-starter"></a> </p> # 簡介 dynamic-datasource-spring-boot-starter 是一個基于springboot的快速集成多數據源的啟動器。 其支持 **Jdk 1.7+, SpringBoot 1.5.x 2.x.x 3.x.x**。 JPA用戶不建議使用,JPA自帶事務,無法連續切庫。 # 特性 - 支持 **數據源分組** ,適用于多種場景 純粹多庫 讀寫分離 一主多從 混合模式。 - 支持數據庫敏感配置信息 **加密(可自定義)** ENC()。 - 支持每個數據庫獨立初始化表結構schema和數據庫database。 - 支持無數據源啟動,支持懶加載數據源(需要的時候再創建連接)。 - 支持 **自定義注解** ,需繼承DS(3.2.0+)。 - 提供并簡化對Druid,HikariCp,BeeCp,Dbcp2的快速集成。 - 提供對Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等組件的集成方案。 - 提供 **自定義數據源來源** 方案(如全從數據庫加載)。 - 提供項目啟動后 **動態增加移除數據源** 方案。 - 提供Mybatis環境下的 **純讀寫分離** 方案。 - 提供使用 **spel動態參數** 解析數據源方案。內置spel,session,header,支持自定義。 - 支持 **多層數據源嵌套切換** 。(ServiceA >>> ServiceB >>> ServiceC)。 - 提供 **基于seata的分布式事務方案** 。 - 提供 **本地多數據源事務方案。** # 約定 1. 本框架只做 **切換數據源** 這件核心的事情,并**不限制你的具體操作**,切換了數據源可以做任何CRUD。 2. 配置文件所有以下劃線 `_` 分割的數據源 **首部** 即為組的名稱,相同組名稱的數據源會放在一個組下。 3. 切換數據源可以是組名,也可以是具體數據源名稱。組名則切換時采用負載均衡算法切換。 4. 默認的數據源名稱為 **master** ,你可以通過 `spring.datasource.dynamic.primary` 修改。 5. 方法上的注解優先于類上注解。 6. DS支持繼承抽象類上的DS,暫不支持繼承接口上的DS。 # 使用方法 1. 引入dynamic-datasource-spring-boot-starter。 **spring-boot 1.5.x 2.x.x** ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>${version}</version> </dependency> ``` **spring-boot3** ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot3-starter</artifactId> <version>${version}</version> </dependency> ``` 2. 配置數據源。 ```yaml spring: datasource: dynamic: primary: master #設置默認的數據源或者數據源組,默認值即為master strict: false #嚴格匹配數據源,默認false. true未匹配到指定數據源時拋異常,false使用默認數據源 datasource: master: url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver # 3.2.0開始支持SPI可省略此配置 slave_1: url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver slave_2: url: ENC(xxxxx) # 內置加密,使用請查看詳細文檔 username: ENC(xxxxx) password: ENC(xxxxx) driver-class-name: com.mysql.jdbc.Driver #......省略 #以上會配置一個默認庫master,一個組slave下有兩個子庫slave_1,slave_2 ``` ```yaml # 多主多從 純粹多庫(記得設置primary) 混合配置 spring: spring: spring: datasource: datasource: datasource: dynamic: dynamic: dynamic: datasource: datasource: datasource: master_1: mysql: master: master_2: oracle: slave_1: slave_1: sqlserver: slave_2: slave_2: postgresql: oracle_1: slave_3: h2: oracle_2: ``` 3. 使用 **@DS** 切換數據源。 **@DS** 可以注解在方法上或類上,**同時存在就近原則 方法上注解 優先于 類上注解**。 | 注解 | 結果 | |:-------------:|:-----------------------:| | 沒有@DS | 默認數據源 | | @DS("dsName") | dsName可以為組名也可以為具體某個庫的名稱 | ```java @Service @DS("slave") public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; public List selectAll() { return jdbcTemplate.queryForList("select * from user"); } @Override @DS("slave_1") public List selectByCondition() { return jdbcTemplate.queryForList("select * from user where age >10"); } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看