Maison >Java >javaDidacticiel >Comment utiliser mybatis-plus pour configurer plusieurs sources de données dans Springboot

Comment utiliser mybatis-plus pour configurer plusieurs sources de données dans Springboot

王林
王林avant
2023-05-14 12:19:131563parcourir

1. Créez un projet springboot vide

2. Configurez le fichier de configuration pom.xml, modifiez uniquement le contenu dans les dépendances, qui peuvent être directement remplacés

<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. Configurez la source de données

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. Créez une nouvelle

entity, mapper, service, impl

Si vous devez appeler différentes sources de base de données. , il vous suffit d'utiliser simplement l'annotation @DS ("nom de la base de données") dans l'impl

Comment utiliser mybatis-plus pour configurer plusieurs sources de données dans Springboot

5. vous pouvez l'appeler dans la requête de données du contrôleur, la méthode de requête est la même

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 Modifier la classe de démarrage @MapperScan("com.xyz.dsjy.mapper") Ajouter un scan du mappeur#🎜🎜. #

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. Démarrez le projet, affichez correctement les résultats dont nous avons besoin

Comment utiliser mybatis-plus pour configurer plusieurs sources de données dans Springboot

Pièges rencontrés :

Pit 1 :

#🎜 🎜#Description :

Échec de la configuration d'une source de données : l'attribut 'url' n'est pas spécifié et aucune source de données intégrée n'a pu être configurée.

Raison : Impossible de déterminer une classe de pilote appropriée

Parce que pom.xml introduit druide et dynamique, et que nous utilisons dynamique, il nous suffit de supprimer l'introduction du druide.

Pit 2 :

2021-04-08 15:52:53.242 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - Démarrage...#🎜🎜 #2021-04-08 15:52:54.125 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - Démarrage terminé.

2021-04-08 15:52:54.126 INFO 20108 -- - [ principal] com.zaxxer.hikari.HikariDataSource : esclave - Démarrage...
2021-04-08 15:52:54.942 INFO 20108 --- [ principal] com.zaxxer.hikari.HikariDataSource : esclave - Démarrage terminé.
2021-04-08 15:52:54.942 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource : dynamique-datasource - charger une source de données nommée [esclave] success
2021-04-08 1 5 :52:54.943 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource : source de données dynamique - charger une source de données nommée [master] success
2021-04-08 15:52:54.943 INFO 20108 --- [ Main] c.b.d.d. DynamicRoutingDataSource : source de données dynamique chargée initialement [2] source de données, primaire

...
2021-04-08 15:52:54.989 INFO 20108 --- [ principal ] com.zaxxer .hikari.HikariDataSource : esclave - Arrêt initié...

2021-04-08 15:52:54.996 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : esclave - Arrêt terminé .#🎜🎜 #2021-04-08 15:52:54.996 INFO 20108 --- [ principal] com.zaxxer.hikari.HikariDataSource : master - Arrêt initié...

2021-04-08 15:52 :55.164 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - Arrêt terminé.
2021-04-08 15:52:55.165 INFO 20108 --- [ main] c.b .d.d.DynamicRoutingDataSource : dynamique - source de données toutes succès fermé, au revoir

Vous pouvez voir que la source multi-bases de données Démarrage terminé que nous avons configurée pendant le processus de démarrage a été à nouveau arrêtée après avoir rencontré une exception.
Cela est dû à l'introduction de plusieurs packages jar Mybatis. Vérifiez si le fichier bom.xml a introduit deux dépendances, mybatis et mybatis-plus. Si tel est le cas, supprimez simplement mybatis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer