synamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver
场景
若依前后端分离版本地搭建开发环境并运行项目的教程:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662
若依微服务版手把手教你本地搭建环境并运行前后端项目:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/109363303
在上面使用前后端分离的架构和微服务的架构将项目搭建起来之后,默认连接的
是一个Mysql数据库。
然后若依自带对多数据源的支持,
但是前后端分离版的配置了多数据源之后,需要在每个方法上添加注解进行区分
使用微服务版的,可以单独抽离出一个服务,使整个服务都连接到另一个数据源。
但是如果在同一个服务中,除了某个特殊的业务需要单独连接Sqlserver数据库,其他
正常请求Mysql主库的数据。
可以使用dynamic-datasource-spring-starter,基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务
其Gitee地址为:
https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter
约定
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
首先在需要使用的服务的pom文件中引入依赖
<!-- dynamic-datasource--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.2.1</version></dependency>
因为这里的从库数据源需要连接Sqlserver,所以需要再添加Sqlserver的依赖
<!-- sqlserver--><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>7.4.1.jre8</version></dependency>
然后找到配置数据源的配置文件,前后端分离是yml文件,微服务是在Nacos中。
看一下官方的配置示例
spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:url: jdbc:mysql://xx.xx.xx.xx:3306/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置slave_1:url: jdbc:mysql://xx.xx.xx.xx:3307/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverslave_2:url: ENC(xxxxx) # 内置加密,使用请查看详细文档username: ENC(xxxxx)password: ENC(xxxxx)driver-class-name: com.mysql.jdbc.Driver#......省略#以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
这里以自己的需要进行修改,这里是
# Spring
spring:datasource:dynamic:primary: mysqldatasource:#mysql数据库mysql:driver-class-name: com.mysql.cj.jdbc.Driverurl:jdbc:mysql://Mysql数据库的IP:3306/数据库名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: 密码#sqlserversqlserver:driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriverurl: jdbc:sqlserver://Sqlserver数据库的IP:1433;DatabaseName=数据库名username: rootpassword: 密码
这里的主库依然是Mysql数据,只有在某个业务下需要查询从库Sqlserver的数据
如上配置后怎样使用数据源切换
官方示例
就是使用@DS注解即可。
如果没有注解则默认数据源。
所以这里在需要特殊查询Sqlserver数据库的业务的Service的实现上添加@DS注解,参数为上面
配置文件的从库数据源的节点名字
这样就能实现除此业务外都使用配置的Mysql主库数据源,只有加了注解的才使用从库数据源的效果。
synamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver相关推荐
- Spring Boot + Mybatis 实现动态数据源
动态数据源 在很多具体应用场景的时候,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库.又比如业务A要访问A数据库,业务B要访问B数据库等,都可以使用动 ...
- 【spring boot】 禁用/关闭数据源/DataSource
前言 spring boot 2.0.0.RELEASE maven 3.5 eclipse 4.9.0 用spring boot做程序,不需要连接数据库.该程序一直工作正常. 在某次修改程序后,出现 ...
- Spring Boot 集成 Druid 监控数据源
关注"Java后端技术全栈" 回复"面试"获取全套大厂面试资料 Druid 介绍 Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和 ...
- Spring Boot 2.0 多数据源编程 jdbcUrl is required with driverClassName
转载:https://my.oschina.net/chinesedragon/blog/1647846 Spring Boot 2.0 多数据源编程 在Spring Boot 1.5.x之前,多数据 ...
- Spring Boot整合Jpa多数据源
Spring Boot整合Jpa多数据源 本文是Spring Boot整合数据持久化方案的最后一篇,主要和大伙来聊聊Spring Boot整合Jpa多数据源问题.在Spring Boot整合JbdcT ...
- 手把手教你定制标准 Spring Boot starter
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 写在前面 我们每次构建一个 Spring 应用程序时,我 ...
- 一个项目有两个pom_实现一个Spring Boot Starter超简单,读 Starter 源码也不在话下...
Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...
- 一个简易上手的短信服务Spring Boot Starter,连傻瓜都会!
作 者:jackieonway 来 源:jianshu.com/u/36510c75d37c 短信服务在用户注册.登录.找回密码等相关操作中,可以让用户使用更加便捷,越来越多的公司都采用短信验证的方式 ...
- 快速开发一个自定义 Spring Boot Starter ,希望你也会
来源:http://t.cn/Ai9li9fC 众所周知,Spring Boot由众多Starter组成,随着版本的推移Starter家族成员也与日俱增.在传统Maven项目中通常将一些层.组件拆分为 ...
最新文章
- 修改 Idea 终端 Terminal 为 GitBash 或 Cmder
- GDCM:获取dicom文件Sequence的长度的测试程序
- java仿聊天室项目总结_Java团队课程设计-socket聊天室(个人总结)
- oracle 数据库,用户管理以及表空间等相关基础操作
- 制作chrome插件教程
- python cv2图片剪裁
- 网络(韩志刚版笔记)
- React + Taro 小程序跳转公众号
- vxworks下的脚本script创建和使用(相当于windows下的autoexec.bat)
- 免费的静态网页托管_如何使用自动管道免费托管静态站点
- [ISCC 2021]部分wp
- 关于软件界面设计、控件颜色搭配、一些实用建议(偷懒技巧)总结——针对C# WinForm/WPF技术
- Linux存储性能观测——vmstat命令详解
- kube-scheduler源码分析(五)之 PrioritizeNodes
- 【云计算学习教程】云计算架构参考模型
- 网络游戏服务器架构流程
- 头歌平台(EduCoder)—— Matplotlib图形配置
- 静息态功能磁共振成像:关于静息态功能连接和脑网络分析方法
- DB、DBS、DBMS、RDBMS的概念跟区别
- 【西瓜书】4-决策树
热门文章
- PyQt4编程之自定义插槽
- mysql ——MHA
- [move_base-24] process has died [exit code -6, cmd lib/move_base/move_base odom:=mobile_base_control
- 缓冲流、转换流、序列化流、打印流
- Elasticsearch Pipeline Aggregation管道聚合详解
- python sys模块讲解_python模块之sys模块和序列化模块(实例讲解)
- linux查看硬盘smart_SMART Utility for mac (硬盘检测)
- Redis 修改密码
- JUC系列(六) | Callable和Future接口详解使用、FutureTask应用 获取异步线程返回值
- html获取鼠标按键数,鼠标在IE、Firefox和Opera点击键所对应的数字代码