SpringBoot 2.1.10.RELEASE 結合MybatisPlus 3.2.0 版本整合Druid多數據源

  • Demo 結構及源碼

    • Demo結構圖
      在這裏插入圖片描述
    • 源碼鏈接: https://download.csdn.net/download/weixin_44187730/12026906
  • pom.xml添加依賴

<dependencies>
 <!-- Swagger2 接口文檔 -->
        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>swagger-spring-boot-starter</artifactId>
            <version>1.9.1.RELEASE</version>
        </dependency>

        <!-- Druid相關 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.42</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!--Mybatis Plus相關【核心包、逆向工程、模板引擎、多數據源】-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>2.5.7</version>
        </dependency>

        <!--actuator 監控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!--Lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
</dependencies>
  • MybatisPlus整合

    • MP整合: https://blog.csdn.net/weixin_44187730/article/details/101620137
  • Druid多數據源配置application-druid.yml

#Druid多數據源配置信息
spring:
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    #啓動執行SQL腳本 ALWAYS:每次初始化  NEVER:不初始化  EMBEDDED:僅初始化一次
    initialization-mode: EMBEDDED
    schema:
      - classpath:sql/master_db.sql
      - classpath:sql/slave_db.sql
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      #指定默認鏈接的 數據源
      primary: master
      datasource:
        #指定多個數據源鏈接信息 名稱可自己指定
        master:
          url: jdbc:mysql://127.0.0.1:3306/master_db?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
          username: root
          password: admin
          driver-class-name: com.mysql.jdbc.Driver
        slave:
          url: jdbc:mysql://127.0.0.1:3306/slave_db?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
          username: root
          password: admin
          driver-class-name: com.mysql.jdbc.Driver
    druid:
      #初始化大小
      initial-size: 5
      min-idle: 5
      max-active: 20
      #等待超時時間
      max-wait: 60000
      #心跳檢測
      time-between-eviction-runs-millis: 60000
      #配置連接在池的最小時間
      min-evictable-idle-time-millis: 300000
      validation-query: SELCET 1
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      #打開PSCache
      pool-prepared-statements: true
      max-pool-prepared-statement-per-connection-size: 20
      #配置監控統計連接的filters,去掉後監控sql無法統計
      filters: stat,wall,slf4j
      connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      #配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      #配置DruidStatViewServlet
      stat-view-servlet:
        url-pattern: "/druid/*"
        #IP白名單
        allow: 127.0.0.1,192.168.44.*
        #IP黑名單
        deny: 192.168.15.85
        reset-enable: false
        # druid監控臺登錄用戶密碼
        login-username: admin
        login-password: 123456
  • 啓用相關配置application.yml
#端口配置
server:
  port: 9088
  servlet:
    context-path: /
spring:
  application:
    name: boot-druid-mp-dynamic-db
  profiles:
    active: mp,druid

  • 編寫測試方法
    • 在需要切換數據源的地方加上@DS(“數據源名稱”)
@Service
public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements UsersService {

    @DS("master")
    @Override
    public List<Users> getAllUserFromMaster() {

        return this.baseMapper.selectList(null);
    }

    @DS("slave")
    @Override
    public List<Users> getAllUserFromSlave() {

        return this.baseMapper.selectList(null);
    }
}

  • 編寫測試接口
@RestController
@RequestMapping("/us")
public class UsersController {

    @Autowired
    UsersService usersService;


    @GetMapping("/getAllUserFromMaster")
    public Object getAllUserFromMaster() {

        return usersService.getAllUserFromMaster();
    }

    @GetMapping("/getAllUserFromSlave")
    public Object getAllUserFromSlave() {

        return usersService.getAllUserFromSlave();
    }
}
  • 測試數據源切換
    在這裏插入圖片描述
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章