SpringBoot多数据源解决方案(转载)
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多数据源解决方案(转载)的更多相关文章
- springboot+多数据源配置
作者:纯洁的微笑 出处:http://www.ityouknow.com/ 起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多 ...
- Spring 实现动态数据源切换--转载 (AbstractRoutingDataSource)的使用
[参考]Spring(AbstractRoutingDataSource)实现动态数据源切换--转载 [参考] 利用Spring的AbstractRoutingDataSource解决多数据源的问题 ...
- spring boot(七)mybatis多数据源解决方案
说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...
- Spring-Boot配置文件数据源配置项
Spring-Boot配置文件数据源配置项(常用配置项为红色) 参数 介绍 spring.datasource.continue-on-error = false 初始化数据库时发生错误时,请勿停止 ...
- SpringBoot多数据源动态切换数据源
1.配置多数据源 spring: datasource: master: password: erp_test@abc url: jdbc:mysql://127.0.0.1:3306/M201911 ...
- SpringBoot学习笔记(三):SpringBoot集成Mybatis、SpringBoot事务管理、SpringBoot多数据源
SpringBoot集成Mybatis 第一步我们需要在pom.xml里面引入mybatis相关的jar包 <dependency> <groupId>org.mybatis. ...
- 搞定SpringBoot多数据源(1):多套源策略
目录 1. 引言 2. 运行环境 3. 多套数据源 3.1 搭建 Spring Boot 工程 3.1.1 初始化 Spring Boot 工程 3.1.2 添加 MyBatis Plus 依赖 3. ...
- 搞定SpringBoot多数据源(2):动态数据源
目录 1. 引言 2. 动态数据源流程说明 3. 实现动态数据源 3.1 说明及数据源配置 3.1.1 包结构说明 3.1.2 数据库连接信息配置 3.1.3 数据源配置 3.2 动态数据源设置 3. ...
- 搞定SpringBoot多数据源(3):参数化变更源
目录 1. 引言 2. 参数化变更源说明 2.1 解决思路 2.2 流程说明 3. 实现参数化变更源 3.1 改造动态数据源 3.1.1 动态数据源添加功能 3.1.2 动态数据源配置 3.2 添加数 ...
随机推荐
- ES6迭代器和生成器
一.迭代器 JavaScript 原有的表示"集合"的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set.这样就需要一种统一的接口机制,来处理 ...
- linux系统基础优化及高级操作命令
Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和 ...
- 上传本地文件到linux
Linux 命令行上传文件 Linux服务器,硬盘坏了,更换硬盘后,重装了好像是Foreda v22的操作系统,我在/var/www/html/目录下新建了我的个人文件夹 kma,然后我在此kma文件 ...
- C++入门经典-例6.10-将多维数组转换成一维数组
1:代码如下: // 6.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- 构建基于Electron开发的软件遇到的问题
构建pdman时,报了好些错. 主要还是网络问题和版本不一致导致的. 前提 npm设置淘宝源,自行搜索. 版本 上面是官方要求的node环境. 需要首先安装nvm, brew install nvm ...
- ASP.NET中的物理路径与虚拟路径
物理路径:c:\PathsAndURLs\Content\Colors.html虚拟路径:(http://localhost:53274/Content/Colors.html)路径中端口号后面的那部 ...
- webConfig的使用
<sessionState mode="Off|InProc|StateServer|SQLServer" cookieless="true|false" ...
- echart 饼图图例legend支持滑动
ps: 以下针对option操作 文章目录 图例过多加上滚动条图例形状图例自定义显示图例过多加上滚动条 legend:{ top:'50', bottom:'50', type:'scroll',} ...
- Macpro搭建java自动化(selenium+chrome)
准备工作: 1.下载安装eclipse,并安装培训jdk软件及环境变量: 2.下载selenium,系工具包: http://seleniumhq.org/download/ selenium-ser ...
- Molecular Dynamics
First]前处理 Second]运行MD Third]后处理 一.获得结构文件-来自实验数据或者某些化学软件工具 1]第一步: 获取并处理pdb文件 从Protein Data Bank下载小肽的p ...