【动态数据源】⭐️@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 日志链路追踪!