场景

若依前后端分离版本地搭建开发环境并运行项目的教程:

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相关推荐

  1. Spring Boot + Mybatis 实现动态数据源

    动态数据源 在很多具体应用场景的时候,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库.又比如业务A要访问A数据库,业务B要访问B数据库等,都可以使用动 ...

  2. 【spring boot】 禁用/关闭数据源/DataSource

    前言 spring boot 2.0.0.RELEASE maven 3.5 eclipse 4.9.0 用spring boot做程序,不需要连接数据库.该程序一直工作正常. 在某次修改程序后,出现 ...

  3. Spring Boot 集成 Druid 监控数据源

    关注"Java后端技术全栈" 回复"面试"获取全套大厂面试资料 Druid 介绍 Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池.插件框架和 ...

  4. 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之前,多数据 ...

  5. Spring Boot整合Jpa多数据源

    Spring Boot整合Jpa多数据源 本文是Spring Boot整合数据持久化方案的最后一篇,主要和大伙来聊聊Spring Boot整合Jpa多数据源问题.在Spring Boot整合JbdcT ...

  6. 手把手教你定制标准 Spring Boot starter

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 写在前面 我们每次构建一个 Spring 应用程序时,我 ...

  7. 一个项目有两个pom_实现一个Spring Boot Starter超简单,读 Starter 源码也不在话下...

    Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...

  8. 一个简易上手的短信服务Spring Boot Starter,连傻瓜都会!

    作 者:jackieonway 来 源:jianshu.com/u/36510c75d37c 短信服务在用户注册.登录.找回密码等相关操作中,可以让用户使用更加便捷,越来越多的公司都采用短信验证的方式 ...

  9. 快速开发一个自定义 Spring Boot Starter ,希望你也会

    来源:http://t.cn/Ai9li9fC 众所周知,Spring Boot由众多Starter组成,随着版本的推移Starter家族成员也与日俱增.在传统Maven项目中通常将一些层.组件拆分为 ...

最新文章

  1. 修改 Idea 终端 Terminal 为 GitBash 或 Cmder
  2. GDCM:获取dicom文件Sequence的长度的测试程序
  3. java仿聊天室项目总结_Java团队课程设计-socket聊天室(个人总结)
  4. oracle 数据库,用户管理以及表空间等相关基础操作
  5. 制作chrome插件教程
  6. python cv2图片剪裁
  7. 网络(韩志刚版笔记)
  8. React + Taro 小程序跳转公众号
  9. vxworks下的脚本script创建和使用(相当于windows下的autoexec.bat)
  10. 免费的静态网页托管_如何使用自动管道免费托管静态站点
  11. [ISCC 2021]部分wp
  12. 关于软件界面设计、控件颜色搭配、一些实用建议(偷懒技巧)总结——针对C# WinForm/WPF技术
  13. Linux存储性能观测——vmstat命令详解
  14. kube-scheduler源码分析(五)之 PrioritizeNodes
  15. 【云计算学习教程】云计算架构参考模型
  16. 网络游戏服务器架构流程
  17. 头歌平台(EduCoder)—— Matplotlib图形配置
  18. 静息态功能磁共振成像:关于静息态功能连接和脑网络分析方法
  19. DB、DBS、DBMS、RDBMS的概念跟区别
  20. 【西瓜书】4-决策树

热门文章

  1. PyQt4编程之自定义插槽
  2. mysql ——MHA
  3. [move_base-24] process has died [exit code -6, cmd lib/move_base/move_base odom:=mobile_base_control
  4. 缓冲流、转换流、序列化流、打印流
  5. Elasticsearch Pipeline Aggregation管道聚合详解
  6. python sys模块讲解_python模块之sys模块和序列化模块(实例讲解)
  7. linux查看硬盘smart_SMART Utility for mac (硬盘检测)
  8. Redis 修改密码
  9. JUC系列(六) | Callable和Future接口详解使用、FutureTask应用 获取异步线程返回值
  10. html获取鼠标按键数,鼠标在IE、Firefox和Opera点击键所对应的数字代码