当前位置: 首页 > 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.dtcms.com/a/323264.html

相关文章:

  • 【QT】常⽤控件详解(六)多元素控件 QListWidget Table Widget Tree Widget
  • 【Avalonia】无开发者账号使用iOS真机调试跨平台应用
  • C++四种类型转换
  • Tiger任务管理系统-12
  • SpringBoot学习日记(二)
  • Day38 Dataset和Dataloader类
  • Git 核心概念与操作全指南(含工作区、暂存区、版本库详解)
  • VisionMoE本地部署的创新设计:从架构演进到高效实现
  • python的format易混淆的细节
  • Java 实现企业级服务器资源监控系统(含 SSH 执行 + 邮件通知 + Excel 报表)
  • 欧拉公式的意义
  • 202506 电子学会青少年等级考试机器人六级器人理论真题
  • 通用AGI到来,记忆仍需要一点旧颜色
  • 【狂飙AGI】2025年上半年中文大模型综合性测评
  • [已解决]VSCode右键菜单消失恢复
  • 用户需求调研后的信息如何整理
  • 大语言模型提示工程与应用:LLMs文本生成与数据标注实践
  • 需求管理流程规范
  • 强化学习概论(1)
  • Android 锁屏图标的大小修改
  • android15哪些广播可以会走冷启动或者用于保活呢?
  • 探索Trae:使用Trae CN爬取 Gitbook 电子书
  • 【Doris】实时分析型数据库
  • 走遍美国5 The Right Magic 钓鱼秘决
  • 【Python 语法糖小火锅 · 第 3 涮】
  • 【RabbitMQ】高级特性—TTL、延迟队列详解
  • Java 中的编译与反编译:全面解析与实践指南
  • drippingblues靶机
  • 四边形(梯形、平行四边形、矩形、菱形和正方形)
  • [贪心]田忌赛马