1、开源项目地址:MyBatis Plus & Dynamic Datasource

    Maven配置:

 <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.4.</version>
</dependency>

        配置文件说明:

server:
port:
logging:
level:
cn.mrxionge.bootdemo: debug
org.springframework.web: debug
org.springframework.data: debug
mybatis-plus:
executor-type: simple
spring:
datasource:
#配置hikari连接池
hikari:
minimum-idle:
maximum-pool-size:
connection-timeout:
idle-timeout:
connection-init-sql: set names utf8mb4
#动态数据源配置
dynamic:
#主数据源
primary: a01
datasource:
#数据源a01
a01:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a01?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password:
#数据源a02
a02:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a02?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password:
#数据源a03
a03:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a03?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password:

  测试:新建三个不同的mapper文件,每个mapper文件对应一个数据源,通过调用不同的mapper文件中的方法实现查询不同数据库中的数据

       Mapper示例:   

@DS(value = "a01")
@Mapper
public interface MapperA01 extends BaseMapper<UserInfo> {
@Select("SELECT * FROM user_info")
List<UserInfo> getAllUser();
}
@DS(value = "a02")
@Mapper
public interface MapperA02 extends BaseMapper<UserInfo> {
@Select("SELECT * FROM user_info")
List<UserInfo> getAllUser();
}
@DS(value = "a03")
@Mapper
public interface MapperA03 extends BaseMapper<UserInfo> {
@Select("SELECT * FROM user_info")
List<UserInfo> getAllUser();
}

   Service示例:

    

@Service
public class AppService { @Autowired
private MapperA01 mapperA01; @Autowired
private MapperA02 mapperA02; @Autowired
private MapperA03 mapperA03; /**
* 查询A01库中的数据
*
* @return 用户信息列表
*/
List<UserInfo> getUser01() {
return mapperA01.getAllUser();
} /**
* 查询A02库中的数据
*
* @return 用户信息列表
*/
List<UserInfo> getUser02() {
return mapperA02.getAllUser();
} /**
* 查询A03库中的数据
*
* @return 用户信息列表
*/
List<UserInfo> getUser03() {
return mapperA03.getAllUser();
}
}

   Controller示例:

@RestController
public class AppHandler { @Autowired
private AppService service; @GetMapping(path = "/get01")
public Mono get01() {
//查询A01数据
return Mono.fromSupplier(service::getUser01);
} @GetMapping(path = "/get02")
public Mono get02() {
//查询A02数据
return Mono.fromSupplier(service::getUser02);
} @GetMapping(path = "/get03")
public Mono get03() {
//查询A03数据
return Mono.fromSupplier(service::getUser03);
}
}

版权声明:本文为CSDN博主「MrXionGe」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31226223/article/details/85322561

SpringBoot多数据源解决方案(转载)的更多相关文章

  1. springboot+多数据源配置

    作者:纯洁的微笑 出处:http://www.ityouknow.com/ 起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多 ...

  2. Spring 实现动态数据源切换--转载 (AbstractRoutingDataSource)的使用

    [参考]Spring(AbstractRoutingDataSource)实现动态数据源切换--转载 [参考] 利用Spring的AbstractRoutingDataSource解决多数据源的问题 ...

  3. spring boot(七)mybatis多数据源解决方案

    说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...

  4. Spring-Boot配置文件数据源配置项

    Spring-Boot配置文件数据源配置项(常用配置项为红色) 参数 介绍 spring.datasource.continue-on-error = false 初始化数据库时发生错误时,请勿停止 ...

  5. SpringBoot多数据源动态切换数据源

    1.配置多数据源 spring: datasource: master: password: erp_test@abc url: jdbc:mysql://127.0.0.1:3306/M201911 ...

  6. SpringBoot学习笔记(三):SpringBoot集成Mybatis、SpringBoot事务管理、SpringBoot多数据源

    SpringBoot集成Mybatis 第一步我们需要在pom.xml里面引入mybatis相关的jar包 <dependency> <groupId>org.mybatis. ...

  7. 搞定SpringBoot多数据源(1):多套源策略

    目录 1. 引言 2. 运行环境 3. 多套数据源 3.1 搭建 Spring Boot 工程 3.1.1 初始化 Spring Boot 工程 3.1.2 添加 MyBatis Plus 依赖 3. ...

  8. 搞定SpringBoot多数据源(2):动态数据源

    目录 1. 引言 2. 动态数据源流程说明 3. 实现动态数据源 3.1 说明及数据源配置 3.1.1 包结构说明 3.1.2 数据库连接信息配置 3.1.3 数据源配置 3.2 动态数据源设置 3. ...

  9. 搞定SpringBoot多数据源(3):参数化变更源

    目录 1. 引言 2. 参数化变更源说明 2.1 解决思路 2.2 流程说明 3. 实现参数化变更源 3.1 改造动态数据源 3.1.1 动态数据源添加功能 3.1.2 动态数据源配置 3.2 添加数 ...

随机推荐

  1. 分布式-信息方式-ActiveMQ的集群

    ActiveMQ的集群Queue consumer clusters              ActiveMQ支持 Consumer对消息高可靠性的负载平衡消费,如果一个 Consumer死掉,该消 ...

  2. java期末总结

    java期末总结: java语言特点:1.简洁有效 2.可移植性 3.面向对象 4.解释型 5.适合分布式计算 6.拥有较好的性能 7.健壮.防患于未然 8.具有多线程处理能力 9.具有较高的安全性 ...

  3. ajax 调用 webService

    前台脚本<script type="text/javascript"> $(function () { $.ajax({ type: "POST", ...

  4. leetcode-easy-design-155 Min Stack

    mycode   21.48% class MinStack(object): def __init__(self): """ initialize your data ...

  5. Ruby小白入门笔记之<个人记录档>

    书写缘由 快两年的JAVA开发,因为来到一家新公司,产品需要用Ruby开发,故此才有了这从头开始,一入编程深似海啊...... 因为入门时是JAVA,所以理念跟规范早已形成,故此感觉突然采用Ruby编 ...

  6. flutter 屏幕宽高 状态栏高度

    MediaQuery.of(context) 包含了一些屏幕的属性: size : 一个包含宽度和高度的对象,单位是dp print(MediaQuery.of(context).size); //输 ...

  7. sorted&filter&map

    python里列表的sort和内置的sorted函数,都可以进行排序,列表的sort方法是在原有的列表上进行排序,sorted是会返回一个新的对象 persons = [ {'name': '小明', ...

  8. javascript-->getElementsByClass

        //通过类名获取元素    //obj->目标元素的上一层元素  cName->目标类名 tagName->目标的标签类型(可缺省)    function getEleme ...

  9. 通过wscript运行的JS脚本,如何引入另一个JS文件

    链接: https://helloacm.com/include-external-files-in-vbscriptjscript-wsh/ 代码示例: function Include(jsFil ...

  10. CTF—攻防练习之HTTP—SQl注入(get)

    攻击机:192.168.32.152 靶机 :192.168.32.157 扫描靶机扫端口: 开放了ssh和80看下ssh版本有没有漏洞,searchsplot下,没有发现 dirb扫描下目录,有个a ...