SpringBoot+Dynamic多数据源动态切换
最近做了个小模块,需求就是项目同时读取三个数据库,操作数据。并不是分库分表,只用定时跑,不需要对外提供接口。
技术选型:SpringBoot + Mybatis Plus(Mybatis) + Dynamic
1. 用MyBatis Plus 生成mapper、xml、service,生成方法。
2. 引用核心jar包
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.4.2</version>
</dependency>
3. yml文件配置(有需要连接池配置的可以自己加)
spring:
datasource:
#配置hikari连接池
hikari:
minimum-idle: 4
maximum-pool-size: 16
connection-timeout: 10000
idle-timeout: 30000
connection-init-sql: set names utf8mb4
#动态数据源配置
dynamic:
#主数据源
primary: business
datasource:
#数据源1
business:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_business?useUnicode=true&characterEncoding=utf-8
username: ****
password: ****
#数据源2
user:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_user?useUnicode=true&characterEncoding=utf-8
username: ****
password: ****
#数据源3
order:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_order?useUnicode=true&characterEncoding=utf-8
username: ****
password: ****
4. 在Service层加DS注解(注意:这个注解要加到mapper.xml文件对应的dao接口层,会报加载失败异常)
@Service
@DS(value = "user")
public class UserServiceImpl extends ServiceImpl<UserMapper, UserInfo>
implements UserService { } bussines, order...库配置是一样的
5. 启动类注解
@MapperScan("com.**.dao")
@ComponentScan(value = "com.**")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
6. 启动项目,看日志输出了如下信息,表示配置成功:
2019-12-16 20:50:52.565 INFO 12896 --- [ main] com.zaxxer.hikari.HikariDataSource : business - Starting...
2019-12-16 20:50:53.611 INFO 12896 --- [ main] com.zaxxer.hikari.HikariDataSource : business - Start completed.
2019-12-16 20:50:53.611 INFO 12896 --- [ main] com.zaxxer.hikari.HikariDataSource : user - Starting...
2019-12-16 20:50:54.100 INFO 12896 --- [ main] com.zaxxer.hikari.HikariDataSource : user - Start completed.
2019-12-16 20:50:54.100 INFO 12896 --- [ main] com.zaxxer.hikari.HikariDataSource : order - Starting...
2019-12-16 20:50:54.607 INFO 12896 --- [ main] com.zaxxer.hikari.HikariDataSource : order - Start completed.
2019-12-16 20:50:54.608 INFO 12896 --- [ main] c.b.d.d.DynamicRoutingDataSource : 初始共加载 3 个数据源
2019-12-16 20:50:54.608 INFO 12896 --- [ main] c.b.d.d.DynamicRoutingDataSource : 动态数据源-加载 business 成功
2019-12-16 20:50:54.608 INFO 12896 --- [ main] c.b.d.d.DynamicRoutingDataSource : 动态数据源-加载 user 成功
2019-12-16 20:50:54.608 INFO 12896 --- [ main] c.b.d.d.DynamicRoutingDataSource : 动态数据源-加载 order 成功
2019-12-16 20:50:54.609 INFO 12896 --- [ main] c.b.d.d.DynamicRoutingDataSource : 当前的默认数据源是单数据源,数据源名为 business
SpringBoot+Dynamic多数据源动态切换的更多相关文章
- SpringBoot之多数据源动态切换数据源
原文:https://www.jianshu.com/p/cac4759b2684 实现 1.建库建表 首先,我们在本地新建三个数据库名分别为master,slave1,slave2,我们的目前就是写 ...
- springboot多数据源动态切换和自定义mybatis分页插件
1.配置多数据源 增加druid依赖 完整pom文件 数据源配置文件 route.datasource.driver-class-name= com.mysql.jdbc.Driver route.d ...
- Springboot多数据源配置--数据源动态切换
在上一篇我们介绍了多数据源,但是我们会发现在实际中我们很少直接获取数据源对象进行操作,我们常用的是jdbcTemplate或者是jpa进行操作数据库.那么这一节我们将要介绍怎么进行多数据源动态切换.添 ...
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法
一.开篇 这里整合分别采用了Hibernate和MyBatis两大持久层框架,Hibernate主要完成增删改功能和一些单一的对象查询功能,MyBatis主要负责查询功能.所以在出来数据库方言的时候基 ...
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源方法
一.开篇 这里整合分别采用了Hibernate和MyBatis两大持久层框架,Hibernate主要完成增删改功能和一些单一的对象查询功能,MyBatis主要负责查询功能.所以在出来数据库方言的时候基 ...
- Spring多数据源动态切换
title: Spring多数据源动态切换 date: 2019-11-27 categories: Java Spring tags: 数据源 typora-root-url: ...... --- ...
- mybatis 多数据源动态切换
笔者主要从事c#开发,近期因为项目需要,搭建了一套spring-cloud微服务框架,集成了eureka服务注册中心. gateway网关过滤.admin服务监控.auth授权体系验证,集成了redi ...
- 实战:Spring AOP实现多数据源动态切换
需求背景 去年底,公司项目有一个需求中有个接口需要用到平台.算法.大数据等三个不同数据库的数据进行计算.组装以及最后的展示,当时这个需求是另一个老同事在做,我只是负责自己的部分. 直到今年回来了,这个 ...
- SpringBoot多数据源动态切换数据源
1.配置多数据源 spring: datasource: master: password: erp_test@abc url: jdbc:mysql://127.0.0.1:3306/M201911 ...
随机推荐
- 我终于弄懂了Python的装饰器(一)
此系列文档: 1. 我终于弄懂了Python的装饰器(一) 2. 我终于弄懂了Python的装饰器(二) 3. 我终于弄懂了Python的装饰器(三) 4. 我终于弄懂了Python的装饰器(四) 一 ...
- CTFHub_技能树_SQL注入Ⅰ
SQL注入 布尔盲注 查看页面: 尝试输入测试信息: 提示为布尔注入,构造相应payload: ?id=1 and ascii(substr((select database()),1,1))> ...
- redis(十):Redis 列表(List)
Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967 ...
- 记录groupby的一次操作
df = pd.DataFrame({'key1':list('aabba'), 'key2': ['one','two','one','two','one'], 'data1': np.random ...
- Bounding-Box(BB)regression
最近在学习RCNN,对于Bounding-Box(BB)regression能够提高边界框的精确度,对于其内容产生了很大兴趣. 主要内容学习自大神博客:https://blog.csdn.net/bi ...
- 用Python演奏音乐
目录 背景 准备 安装mingus 下载并配置fluidsynth 下载soundfont文件 分析 乐谱格式 乐谱解析 弹奏音乐 添加伴奏 保存音乐 完整程序 背景 笔者什么乐器也不会,乐理知识也只 ...
- OSCP Learning Notes - Buffer Overflows(2)
Finding the Offset 1. Use the Metasploite pattern_create.rb tool to create 5900 characters. /usr/sha ...
- 集训作业 洛谷P1100 高低位交换
这个题简单来说就是把一个数转成32位的2进制数,不够的补0.然后把这个数的前半部分和后半部分互换,再计算结果. 思路简单明了,接下来是代码: #include<iostream> #inc ...
- 12C oracle 12.1.0.2版本打补丁
从support 1454618.1文档 中可以下载到各版本的补丁和PSU. 此次采用的是28349311 版本号的psu 和28440711 版本号的jvm.opatch版本号6880880_12 ...
- NameBeta - 多家比价以节省咱的域名注册成本
共收录 1584 种顶级域名,汇集互联网上 29 家知名域名注册商,每日更新价格信息 有的域名还可以查出到期时间点我前往官网 NameSilo1美元优惠码:whatz