1. 程式人生 > 實用技巧 >mybatis plus + druid多資料來源(使用dynamic實現)

mybatis plus + druid多資料來源(使用dynamic實現)

參考開源專案dynamic:https://github.com/baomidou/dynamic-datasource-spring-boot-starter

引入pom:

        <!-- 動態資料來源 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <
version>2.5.4</version> </dependency>

配置檔案yml中:

spring:
  autoconfigure:
    #自動化配置 例外處理
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #多資料來源配置
    dynamic:
      primary: db1
      datasource:
        # 資料庫1
        db1:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://xxxx:3306/xxx?useUnicode=true
&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai username: xxx password: xxxx # 資料庫2 db2: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://xxxx:3306/xxx?useUnicode=true&characterEncoding
=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai username: xxx password: xxxx #dynamic - 公共配置 druid: initialSize: 5 minIdle: 5 maxActive: 30 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 filters: stat,wall,slf4j,config useGlobalDataSourceStat: true stat: log-slow-sql: true merge-sql: true slow-sql-millis: 10000

用法:在相應service類或方法上新增DS註解,如:

package com.tuijie.loanapi.service.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tuijie.loanapi.mapper.TestUserMapper;
import com.tuijie.loanapi.model.mysql.TestUser;
import com.tuijie.loanapi.service.TestUserService;
import org.springframework.stereotype.Service;

/**
 * TestUserServiceImpl
 * 測試ServiceImpl
 * @version :
 */
@Service
@DS("db2")
public class TestUserServiceImpl extends ServiceImpl<TestUserMapper, TestUser> implements TestUserService {
}