ホームページ  >  記事  >  Java  >  mybatis-plus を使用して springboot で複数のデータソースを構成する方法

mybatis-plus を使用して springboot で複数のデータソースを構成する方法

王林
王林転載
2023-05-14 12:19:131513ブラウズ

1. 空の springboot プロジェクトを作成します

2. pom.xml 構成ファイルを構成します。依存関係内のコンテンツのみを変更します (直接置き換えることができます)

<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. データを構成しますsource

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. 対応する新しい

エンティティ、マッパー、サービス、impl

未使用のデータベース ソースを呼び出す必要がある場合は、アノテーション @DS( impl の "データベース名" )

mybatis-plus を使用して springboot で複数のデータソースを構成する方法

#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") を変更します。マッパー スキャンを追加します

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. プロジェクトを開始し、必要な結果を正しく出力します

mybatis-plus を使用して springboot で複数のデータソースを構成する方法

発生した落とし穴:

落とし穴 1:

説明:

データソースの構成に失敗しました: 'url' 属性がありません指定されており、埋め込みデータソースを構成できませんでした。

理由: 適切なドライバー クラスを決定できませんでした。

pom.xml では druid と Dynamic が導入されており、dynamic を使用しているため、削除するだけで済みます。ドルイドの紹介。

ピット 2:
2021-04-08 15:52:53.242 情報 20108 --- [メイン] com.zaxxer.hikari.HikariDataSource : マスター - 開始中...
2021-04 -08 15:52:54.125 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - 開始が完了しました。
2021-04-08 15:52:54.126 INFO 20108 --- [ main] com .zaxxer.hikari.HikariDataSource : スレーブ - 開始中...
2021-04-08 15:52:54.942 INFO 20108 --- [main] com.zaxxer.hikari.HikariDataSource : スレーブ - 開始開始.
2021-04-08 15:52:54.942 情報 20108 --- [メイン] c.b.d.d.DynamicRoutingDataSource : 動的データソース - [スレーブ] という名前のデータソースをロードします success
2021-04-08 15:52:54.943 情報 2010 8 - - - [メイン] c.b.d.d.DynamicRoutingDataSource : 動的データソース - [マスター] という名前のデータソースをロードします success
2021-04-08 15:52:54.943 INFO 20108 --- [メイン] c.b.d.d.DynamicRoutingDataSource : 動的データソースの初期ロード [ 2 ] データソース、プライマリ

....
2021-04-08 15:52:54.989 情報 20108 --- [メイン] com.zaxxer.hikari.HikariDataSource : スレーブ - シャットダウンが開始されました。 ..
2021-04-08 15:52:54.996 情報 20108 --- [メイン] com.zaxxer.hikari.HikariDataSource : スレーブ - シャットダウンが完了しました。
2021-04-08 15:52:54.996 情報20108 --- [メイン] com.zaxxer.hikari.HikariDataSource : マスター - シャットダウンが開始されました...
2021-04-08 15:52:55.164 情報 20108 --- [メイン] com.zaxxer.hikari .HikariDataSource : master - Shutdown completed.
2021-04-08 15:52:55.165 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource :dynamic-datasource all Closed success,bye

起動中に確認できますこのプロセスでは、構成した複数のデータベース ソースの開始が完了しましたが、例外が発生し、再びシャットダウンされました。
複数の Mybatis jar パッケージの導入が原因で、bom.xml ファイルに 2 つの依存関係 (mybatis と mybatis-plus) が導入されているかどうかを確認してください。導入されている場合は、mybatis を削除してください。

以上がmybatis-plus を使用して springboot で複数のデータソースを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。