• Spring Boot 实现动态数据源配置


    前言

    之前在CSDN博客以及某站看了教程,不免觉得有点不知如何下手,好在最后融合了以下,得出了一个比较简单的配置动态数据源的过程。

    首先项目是Spring Boot的单体项目,我们的需求是要连接多个数据库,那么就需要配置多个数据源。接下来我会写清楚每一个步骤,让大家掌握这个技术。

     注意:不论数据库是Mysql 还是 SqlServer,原理是一样的!

    目录

     一.引入依赖

     二.找到你的 Dao 或者是 Mapper文件

    三.运行你的程序


     一.引入依赖

    在pom文件中引入动态数据源配置依赖:

    1. <dependency>
    2. <groupId>com.baomidougroupId>
    3. <artifactId>dynamic-datasource-spring-boot-starterartifactId>
    4. <version>3.5.0version>
    5. dependency>

    注意:确保你的项目已经引入了 MySQL 或者是 SQL server的依赖! 比如我的数据库是SQL server,我就引入了以下依赖:

    1. <dependency>
    2. <groupId>com.microsoft.sqlservergroupId>
    3. <artifactId>mssql-jdbcartifactId>
    4. <version>8.4.0.jre8version>
    5. <scope>runtimescope>
    6. dependency>

    除此之外:还需要有 Mybatis 的依赖:

    1. <dependency>
    2. <groupId>org.mybatis.spring.boot</groupId>
    3. <artifactId>mybatis-spring-boot-starter</artifactId>
    4. <version>2.2.2</version>
    5. </dependency>

    然后找到我们项目的 application.yml 或者是 application.properties 文件

    严格按照如下格式进行数据源的配置:

    1. spring:
    2. datasource:
    3. dynamic:
    4. #设置默认的数据源或者数据源组,默认值即为master
    5. primary: master
    6. #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
    7. strict: false
    8. datasource:
    9. master:
    10. driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    11. url: jdbc:sqlserver://xxx.xxx.x.x:1433;DatabaseName=xxx
    12. username: xxx
    13. password: xxx
    14. slave:
    15. driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    16. url: jdbc:sqlserver://xxx.xxx.x.x:1433;DatabaseName=xxx
    17. username: xxx
    18. password: xxx
    19. slave2:
    20. driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    21. url: jdbc:sqlserver://xxx.xxx.x.x:1433;DatabaseName=xxx
    22. username: xxx
    23. password: xxx

    注意:一定严格按照以上格式,如果你的文字在代码后面,也是会报错的!

     二.找到你的 Dao 或者是 Mapper文件

    也就是找到你的 Mapper 注解所在地

    我们通常会在这个接口中定义我们的方法,并且提供给 Service 层来使用

    那么现在只需要在接口中的方法上,加上所对应的数据源注解:@DS( )。

    比如我用户名和密码存在了 master 数据源中,那么我 UserDao 中定义的方法,只要是用到了用户名和密码的都需要在 master 数据源中进行查找

    这里的 master 和 slave 是在配置数据源的 yml 或 properties文件中自定义的,这个字段你可以自定义。

    三.运行你的程序

    直接运行,会看到 控制台中显示 : maser Start....  slave Start....

    如果报错了,请仔细检查你的数据源配置中的 url 和 数据库的用户名以及密码,百分之九十都是自己的配置错误了。


    Good Bye~!

  • 相关阅读:
    Python库使用笔记—Dataframe
    iOS开发基础109-网络安全
    二、JavaScript基本语法:var、let、const、数据类型、运算符、类型转换
    mybatis小记
    Kafka概论
    java基础 日期工具类
    大学生期末网页大作业:基于HTML+CSS+JavaScript蓝色的汽车设备营销企业网站模板13页面
    轻量且强大的 uni-app http 网络库 - 掘金
    目标检测 YOLOv5 - ncnn模型的加密 C++实现封装库和Android调用库示例
    c++学习--第二部分
  • 原文地址:https://blog.csdn.net/qq_65501447/article/details/139461857