使用MyBatisPlus dynamic-datasource配置多數據源


項目中使用mybatisplus作為ORM框架,如果需要使用多個數據源,可以按如下方法配置:

一、POM文件引入mybatis plus和mysql相關依賴:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>
View Code

二、配置文件

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    dynamic:
      datasource:
        databasefirst: # 數據源1名稱
          url: jdbc:mysql://數據庫IP:端口/數據庫名稱?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&serverTimezone=GMT%2B8
          username: 用戶名
          password: 密碼
          driver-class-name: com.mysql.cj.jdbc.Driver
        databasesecond: # 數據源2名稱
          url: jdbc:mysql://數據庫IP:端口/數據庫名稱?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true&serverTimezone=GMT%2B8
          username: 用戶名
          password: 密碼
          driver-class-name: com.mysql.cj.jdbc.Driver
      primary: databasefirst #默認首選數據源

上述配置文件中指定了兩個數據源,名稱分別為databasefirst和databasesecond,這兩個名字自己定義即可,在后面的數據源注解中會用到。

三、編寫service類,測試多數據源:

@Service
@DS("databasefirst")
public class DemoMultiDataSourceService {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List noDSAnnotationMethodQuery(){
        return jdbcTemplate.queryForList("select * from table_in_firstdb limit 5");
    }

    @DS("databasesecond")
    public List querySecondDB(){
        return jdbcTemplate.queryForList("select * from table_in_seconddb limit 5");
    }

    @DS("databasefirst")
    public List queryFirstDB(){
        return jdbcTemplate.queryForList("select * from table_in_firstdb limit 5");
    }
}

 

@DS注解可以用在方法上,也可以用在類級別。用於方法上的DS注解會覆蓋類級別的DS注解,類級別的DS注解指定了類中的方法使用的數據源,方法上的DS注解指定該方法需要用到的數據源。

在實際開發過程中,按照原有的方式編寫mapper接口,並將接口注入到service實現類中即可,在service實現類上使用DS注解(或者service方法上使用DS注解)即可指定數據源。

關於dynamic-datasource的更多使用方法,可以查閱mybatis plus官網。

 


免責聲明!

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



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