>  기사  >  Java  >  mybatis-plus를 사용하여 springboot에서 여러 데이터 소스를 구성하는 방법

mybatis-plus를 사용하여 springboot에서 여러 데이터 소스를 구성하는 방법

王林
王林앞으로
2023-05-14 12:19:131521검색

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. 해당하는 새 항목을 만듭니다.

entity, mapper , service, impl

다른 데이터베이스 소스를 호출해야 하는 경우 impl

mybatis-plus를 사용하여 springboot에서 여러 데이터 소스를 구성하는 방법5에서 주석 @DS("데이터베이스 이름")를 사용하면 됩니다. 컨트롤러 호출 데이터 쿼리에서도 사용할 수 있습니다. 쿼리 방법은 동일합니다

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密码

6. 시작 클래스 @MapperScan("com.xyz.dsjy.mapper")을 수정하세요. 매퍼 스캔을 추가하세요

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());    }
}

7.

mybatis-plus를 사용하여 springboot에서 여러 데이터 소스를 구성하는 방법Pits 발생:

Pit 1:

Description:

DataSource 구성 실패: 'url' 속성이 지정되지 않았으며 포함된 데이터 소스를 구성할 수 없습니다.

이유: 적합한 드라이버 클래스를 결정하지 못했습니다

pom.xml은 druid와 동적을 도입하고 우리는 동적을 사용하기 때문에 druid 소개만 삭제하면 됩니다.

피트 2:

2021-04-08 15:52:53.242 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - Starting...

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 :slave-Starting ...
2021-04-08 15:52:54.942 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : 슬레이브 - 시작 완료.
2021-04-08 15:52:54.942 INFO 20108 -- - [ main] c.b.d.d.DynamicRoutingDataSource : 동적 데이터소스 - [slave]라는 데이터 소스 로드 성공
2021-04-08 15:52:54.943 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource : 동적 데이터 소스 - [라는 데이터 소스 로드 master] 성공
2021-04-08 15:52:54.943 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource : 동적-데이터 소스 초기 로드됨 [2] 데이터 소스,기본

...

2021-04 -08 15:52 :54.989 INFO 20108 --- [ 메인] com.zaxxer.hikari.HikariDataSource : 슬레이브 - 종료 시작됨...

2021-04-08 15:52:54.996 INFO 20108 --- [ 메인] com .zaxxer.hikari. HikariDataSource : 슬레이브 - 종료가 완료되었습니다.
2021-04-08 15:52:54.996 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - 종료가 시작되었습니다...
2021-04 -08 15:52 :55.164 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - 종료가 완료되었습니다.
2021-04-08 15:52:55.165 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource : 동적 데이터 소스가 모두 닫혔습니다. 성공, 안녕

시작 프로세스 시작 중에 구성한 다중 데이터베이스 소스가 예외가 발생한 후 다시 종료된 것을 볼 수 있습니다.

이는 여러 Mybatis jar 패키지의 도입으로 인해 발생합니다. bom.xml 파일에 mybatis 및 mybatis-plus의 두 가지 종속성이 도입되었는지 확인하세요.

위 내용은 mybatis-plus를 사용하여 springboot에서 여러 데이터 소스를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제