当前位置: 首页 > news >正文

【动态数据源】⭐️@DS注解实现项目中多数据源的配置

💥💥✈️✈️欢迎阅读本文章❤️❤️💥💥

🏆本篇文章阅读大约耗时5分钟。

⛳️motto:不积跬步、无以千里

📋📋📋本文目录如下:🎁🎁🎁

目录

前言

实践

        1、添加依赖

        2、数据源配置

        3、数据查询层定义

        4、模拟查询

        5、事务配置

章末


前言

        小伙伴们大家好,上篇文章做了..做了什么来着,我去翻一下、上篇文章在本地模拟了 Mybatis Plus 代码生成器工具的使用,可以根据自定义配置来创建项目的基础结构,文章链接如下:

【MPG】✈️MybatisPlus代码生成器在 SpringBoot 中的使用

        最近比较忙,差点忘了 CSDN (听我狡辩),

先回归主题,这篇文章本地模拟下项目中用到多数据源的时候,怎么快捷配置使用(针对 springboot 项目)

实践

       数据管理使用的是 mybatis,那么可以借助同类型 的 Dynamic Data Source 三方库来实现管理数据源的切换 

        1、添加依赖

        引入 sdk ,版本可以自行选择

        <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version> <!-- 使用适合的版本 --></dependency>
        2、数据源配置

        数据库连接配置的格式如下:

        primary 指定了默认连接库,datasource 下一级指定了多个数据源的名称,再下一级就是每个数据源链接信息

        本地模拟了同一个数据库实例下的两个数据库配置

        3、数据查询层定义

        每个数据源的 mapper 查询归为一个单独的文件夹,方便区分

        具体 mapper 文件要使用哪个数据源就在上方加上 @DS 注解,并指定想要使用的数据源配置名称;没有单独 @DS 注解的话,会默认使用 primary 的数据源

        (直接将@DS注解加在类上面的话,是针对当前类中所有的查询方法;一样,如果只想针对某个方法的话,那就将 @DS 加在 对应方法上面即可)

        

import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.web.bind.annotation.RequestParam;/**** @author benbenhuang* @date 2025/8/9 21:39*/@DS("dataSource1")
@Mapper
public interface DataSource1Mapper {@Select("select login_name from user where id = #{id}")String getUserLoginName(@RequestParam("id") Integer id);
}
import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.web.bind.annotation.RequestParam;/**** @author benbenhuang* @date 2025/8/9 21:39*/@DS("dataSource2")
@Mapper
public interface DataSource2Mapper {@Select("select name from config where `id` = #{id}")String getAccount(@RequestParam("id") Integer id);
}
        4、模拟查询

        简单测试下,从每个库中的一张表里面查询出数据并打印即可

        看下结果没问题,分别从每个数据源中查出了数据

        5、事务配置

        如果每个数据源都使用自己的事务管理,需要配置下每个数据源的事务管理器,每个数据源方可独立处理事务

        配置好之后,使用的时候如果搭配的是 @Transactional 注解,只需要标注下即可,比如

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;/**** @author benbenhuang* @date 2025/8/9 21:49*/
@Configuration
@EnableTransactionManagement
public class DataSourceConfig {@Beanpublic PlatformTransactionManager dataSource1TransactionManager(DataSource dataSource1) {return new DataSourceTransactionManager(dataSource1);}@Beanpublic PlatformTransactionManager dataSource2TransactionManager(DataSource dataSource2) {return new DataSourceTransactionManager(dataSource2);}
}

章末

        文章到这里就结束了~

对了 最近真的挺忙的

往期推荐 > > > 

 【服务器搭建】✈️用自己电脑搭建一个服务器!

 【IDEA】✈️自定义模板,自动生成类和方法注释

 【日志链路】⭐️SpringBoot 整合 TraceId 日志链路追踪!

http://www.xdnf.cn/news/1271917.html

相关文章:

  • 动态规划(三维)直接按照题目条件
  • windows上LM-Studio下载安装教程
  • 衰减器的计算
  • Java 时间和空间复杂度
  • 推荐系统学习笔记(十)多目标排序模型
  • 《软件测试与质量控制》实验报告五 功能自动化测试
  • SpringSecurity过滤器链全解析
  • 学习:JS[8]本地存储+正则表达式
  • 心灵笔记:思考三部曲
  • 谷歌搜索 sg_ss 逆向分析
  • 计算机网络:深入了解CIDR地址块如何利用VLSM进行子网划分的过程
  • 算法_python_牛客华为机试笔记_01
  • C++算法练习:单词识别
  • 应急响应复现
  • 传输线模拟经验谈
  • 新手入门:Git 初次配置与 Gitee 仓库操作全指南 —— 从环境搭建到代码推送一步到位
  • 编辑距离-二维动态规划
  • Kotlin初体验
  • git命令详解
  • 百度网盘如何做到下载速度最快?OpenSpeedy绿色安装版下载,开源免费网盘加速
  • react 常用组件库
  • Day37--动态规划--52. 携带研究材料(卡码网),518. 零钱兑换 II,377. 组合总和 Ⅳ,57. 爬楼梯(卡码网)
  • Poetry与UV——现代Python依赖管理的革新者
  • Linux 安装 JDK 8u291 教程(jdk-8u291-linux-x64.tar.gz 解压配置详细步骤)​
  • 深入理解 Gin 框架的路由机制:从基础使用到核心原理
  • 蓝牙技术概览
  • imx6ull-驱动开发篇16——信号量与互斥体
  • 练习uart和摄像头内核驱动开发测试
  • 【Python 高频 API 速学 ⑦ · 完结篇】
  • Netbsd安装使用