当前位置: 首页 > 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.lryc.cn/news/615676.html

相关文章:

  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • 深度学习入门Day8:生成模型革命——从GAN到扩散模型
  • pytorch llm 计算flops和参数量
  • Busybox编译、制作initramfs,并在QEMU中运行
  • 束搜索(Beam Search):原理、演进与挑战
  • Java -- 日期类-第一代-第二代-第三代日期
  • NLP:Transformer输出部分
  • 第十九天-输入捕获实验
  • AI编程工具 | Trae介绍
  • Linux高级编程-文件操作
  • SpringBoot 集成 MapStruct
  • Vue 3.6 Vapor模式完全指南:告别虚拟DOM,性能飞跃式提升
  • 使用GTX ip core + SDI IP core实现SDI设计
  • Vue3 路由
  • C++算法练习:单词识别
  • 决策树技术详解:从理论到Python实战
  • 【ref、toRef、toRefs、reactive】
  • 多级缓存详解
  • 《励曼旋耕》Liman Rotary Tillage
  • Python如何合并两个Excel文件
  • 花生4CL基因家族鉴定及对干旱与盐胁迫响应分析--文献精读157
  • 本地进行语音文字互转
  • CVPR中深度学习新范式:通用性、鲁棒性与多模态的创新突破
  • 分布式事务Seata TCC模式篇
  • Linux网络转发系统框架分析
  • 【密码学】7. 数字签名
  • orcad的操作(1)
  • 【LLM】Openai之gpt-oss模型和GPT5模型
  • 【unitrix数间混合计算】2.9 小数部分特征(t_non_zero_bin_frac.rs)
  • DAY35打卡