springboot中如何利用mybatis-plus配置多数据源
这篇文章主要介绍“springboot中如何利用mybatis-plus配置多数据源”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot中如何利用mybatis-plus配置多数据源”文章能帮助大家解决问题。
沁县网站建设公司成都创新互联,沁县网站设计制作,有大型网站制作公司丰富经验。已为沁县数千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的沁县做网站的公司定做!
1.创建一个空的springboot项目
2.配置pom.xml配置文件,只修改dependencies里面的内容,可以直接替换
org.springframework.boot spring-boot-starter org.apache.httpcomponents httpclient cn.hutool hutool-all 5.2.0 com.alibaba fastjson 1.2.9 org.projectlombok lombok true com.baomidou mybatis-plus-boot-starter 3.4.1 com.baomidou dynamic-datasource-spring-boot-starter 3.2.0 mysql mysql-connector-java runtime
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("数据库名称")即可
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.启动项目,正确输出我们需要的结果
遇到的坑:
坑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 - Starting...
2021-04-08 15:52:54.125 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - Start completed.
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 : slave - Start completed.
2021-04-08 15:52:54.942 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource : dynamic-datasource - load a datasource named [slave] success
2021-04-08 15:52:54.943 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource : dynamic-datasource - load a datasource named [master] success
2021-04-08 15:52:54.943 INFO 20108 --- [ main] c.b.d.d.DynamicRoutingDataSource : dynamic-datasource initial loaded [2] datasource,primary
........
2021-04-08 15:52:54.989 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : slave - Shutdown initiated...
2021-04-08 15:52:54.996 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : slave - Shutdown completed.
2021-04-08 15:52:54.996 INFO 20108 --- [ main] com.zaxxer.hikari.HikariDataSource : master - Shutdown initiated...
2021-04-08 15:52:55.164 INFO 20108 --- [ main] 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
可以看到启动过程中我们配置的多数据库源Start completed.之后遇到异常之后又被shutdown了。
因为引入了多个Mybatis 的jar包引起的,检查bom.xml文件是否引入了mybatis和mybatis-plus两个依赖,如果是去掉mybatis即可。
关于“springboot中如何利用mybatis-plus配置多数据源”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。
分享文章:springboot中如何利用mybatis-plus配置多数据源
文章分享:http://scjbc.cn/article/pcehho.html