首頁 >Java >java教程 >springboot中如何利用mybatis-plus配置多重資料來源

springboot中如何利用mybatis-plus配置多重資料來源

王林
王林轉載
2023-05-14 12:19:131561瀏覽

1.建立一個空的springboot專案

2.設定pom.xml設定文件,只修改dependencies裡面的內容,可以直接取代

<dependencies>    <dependency>        <groupid>org.springframework.boot</groupid>        <artifactid>spring-boot-starter</artifactid>    </dependency>    <dependency>        <groupid>org.apache.httpcomponents</groupid>        <artifactid>httpclient</artifactid>    </dependency>    <dependency>        <groupid>cn.hutool</groupid>        <artifactid>hutool-all</artifactid>        <version>5.2.0</version>    </dependency>    <dependency>        <groupid>com.alibaba</groupid>        <artifactid>fastjson</artifactid>        <version>1.2.9</version>    </dependency>    <dependency>        <groupid>org.projectlombok</groupid>        <artifactid>lombok</artifactid>        <optional>true</optional>    </dependency>    <!--   mybatis-plus     -->    <dependency>        <groupid>com.baomidou</groupid>        <artifactid>mybatis-plus-boot-starter</artifactid>        <version>3.4.1</version>    </dependency>    <!--   多数据源配置     -->    <dependency>        <groupid>com.baomidou</groupid>        <artifactid>dynamic-datasource-spring-boot-starter</artifactid>        <version>3.2.0</version>    </dependency>    <!--   mysql     -->    <dependency>        <groupid>mysql</groupid>        <artifactid>mysql-connector-java</artifactid>        <scope>runtime</scope>    </dependency></dependencies>

3.設定資料來源

spring:  datasource:dynamic:      primary: master  #指定默认数据库,下面可以配置多个数据库,不仅仅是两个,master就是其中一个数据库的名字,名字对应就可以,自己随便取      datasource:master:          driver-class-name: com.mysql.cj.jdbc.Driver          url: jdbc:mysql://数据库1ip地址:数据库1端口/数据库1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true          username: 数据库1用户          password: 数据库1密码slave:          driver-class-name: com.mysql.cj.jdbc.Driver          url: jdbc:mysql://数据库2ip地址:数据库2端口/数据库2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true          username: 数据库2用户          password: 数据库2密码

4.新建對應

entity, mapper, service,impl

如果需要呼叫不用的資料庫來源,只需要再impl裡面使用註解@DS("資料庫名稱" )即可

springboot中如何利用mybatis-plus配置多重資料來源

5.編寫定時器呼叫資料查詢,也可以在控制器中呼叫資料查詢,查詢方式是一樣的

package com.xyz.dsjy.task;import com.xyz.dsjy.entity.Enterprise;import com.xyz.dsjy.entity.FjflCredit;import com.xyz.dsjy.service.EnterpriseService;import com.xyz.dsjy.service.FjflCreditService;import lombok.AllArgsConstructor;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;import java.time.LocalDateTime;@AllArgsConstructor@Component@Configuration      //1.主要用于标记配置类,兼备Component的效果。@EnableScheduling   // 2.开启定时任务public class MultithreadScheduleTask {public final FjflCreditService fjflCrediService;    public final EnterpriseService enterpriseService;    @Scheduled(fixedRate=5000)private void configureTasks() {
        FjflCredit fs = fjflCrediService.getById(1);        System.out.println(fs);        System.err.println("执行静态定时任务时间: " + LocalDateTime.now());    }@Scheduled(fixedRate=6000)private void configureTasks2() {
        Enterprise et = enterpriseService.getById(80);        System.out.println(et);        System.err.println("执行静态定时任务时间2222: " + LocalDateTime.now());    }
}

6 .修改啟動類別  @MapperScan("com.xyz.dsjy.mapper")  新增mapper掃描

package com.xyz.dsjy;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.xyz.dsjy.mapper")  //添加启动扫mapper包下的mapper类public class DsjyApplication {public static void main(String[] args) {
        SpringApplication.run(DsjyApplication.class, args);    }

}

7.啟動項目,正確輸出我們需要的結果

springboot中如何利用mybatis-plus配置多重資料來源

#遇到的坑:

坑1:

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver clas

因為pom.xml引入了druid和dynamic,而我們使用的是dynamic,所以只需要刪除druid引入即可。

坑2:
2021-04-08 15:52:53.242  INFO 20108 --- [           main] com.zaxxer.hikari.HikariDataSource   master - -08 15:52:54.125  INFO 20108 --- [           main] com.zaxxer.hikari.HikariDataSource       : master - Startupcomplepleari.HikariDataSource       : master - Start20plepleted.#1202156202015:0020 15:002162120 15:1020 15:002175:00215:00215:002 15:200215:002 15:002175:00215:002 15:200215. [           main] com .zaxxer.hikari.HikariDataSource       : slave - Starting...
2021-04-08 15:52:54.942  INFO 20108 --- [   關鍵    completed.
2021-04-08 15:52:54.942  INFO 20108 --- [           main] c.b.d.d.DynamicRoutingDataSource    5:52:54.943  INFO 20108 -- - [           main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - load a datasource named [master] success#   main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource initial loaded [2 ] datasource,primary 

........
2021-04-08 15:52:54.989  INFO 20108 --- [          ##........
2021-04-08 15:52:54.989  INFO 20108 --- [           main] com.zaxxer.hidownkari.H Data initiated...

2021-04-08 15:52:54.996  INFO 20108 --- [           main] com.zaxxer.hikari.HikariDataSource     main : com.zaxxer.hikari.HikariDataSource     down#01 54.996  INFO 20108 --- [           main] com.zaxxer.hikari.HikariDataSource       : master - Shutdown initiated...

2021-04-08 1.      main] com.zaxxer.hikari .HikariDataSource       : master - Shutdown completed.
2021-04-08 15:52:55.165  INFO 20108 --- [     15:52:55.165  INFO 20108 --- [     Source source: all closed success,bye

可以看到啟動過程中我們配置的多資料庫來源Start completed.之後遇到例外之後又被shutdown了。
因為引入了多個Mybatis 的jar包引起的,檢查bom.xml檔案是否引入了mybatis和mybatis-plus兩個依賴,如果是去掉mybatis即可。

以上是springboot中如何利用mybatis-plus配置多重資料來源的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除