简单几步学会使用多数据源
![](https://storage.bummon.com//image/202307222201721.png)
简单几步学会使用多数据源
Bummon简单几步学会使用多数据源
前言
我们在日常的工作中肯定会遇到一种情况,一个服务的数据存在数据库A,另一个服务的数据存在数据库B,而我们需要去对这两个服务的数据进行整合,那么除了微服务之外我们还有一种实现思路:多数据源。
简介
dynamic-datasource
是一款开箱即用的轻量级开源框架,主要用于解决动态数据源切换的问题。该框架使用简单,支持多种数据库类型,可以按需配置数据源,只需要简单的几个步骤就可以实现多数据源动态切换。
使用
引入依赖
1 | <dependency> |
配置
在这里为了演示就指定到同一个数据源下的不同数据库,我们可以创建一个单独的配置文件来管理我们的数据源,接着我们建立一个 application-druid.yml
的配置文件,如下所示:
1 | spring: |
之后我们再在 application.yml
中指定到我们的数据源配置启动
1 | spring: |
此时来测试一下启动,如果控制台出现以下信息就说明我们已经集成成功
测试
集成成功之后我们来使用并测试一下是否有效
假设现在我们有这么一个场景:在数据库 user
中存放着我们的用户服务相关的表,而在数据库 order
中存放着我们订单服务相关的表,我们想要有个接口来 实现查询每个用户下的所有订单。
创建表
数据库 user
中的表
1 | /* |
数据库 order
中的表
1 | /* |
代码实现
在创建完表之后,我们可以使用 Mybaits Plus
的代码生成器将这两个表的代码生成出来,生成后的结构如下:
然后我们在 t_order
表的 Mapper 和 Service 上加上一个注解:@DS(“order”)
,在 sys_user
表的 Mapper 和 Service 上加上一个注解:@DS(“user”)
。
在 dynamic 中,我们就是通过@DS("数据源名称")
注解来实现数据源的切换的。
加完注解后如下:
然后我们就可以开始写我们的业务代码了,首先我们先创建一个 VO 来保存我们的信息
VO
1 | import com.dynamic.module.order.entity.Order; |
Controller
1 | import com.dynamic.module.user.service.UserService; |
Service
1 | import com.dynamic.module.user.entity.User; |
ServiceImpl
1 | import cn.hutool.core.bean.BeanUtil; |
测试
代码编写完成之后,我们使用 Postman 来测试一下得到的是否是我们预期的结果
最终得到的结果如下:
1 | [ |
可以看到结果确实为我们预期的结果。
至此,教程就结束啦,感谢大家的关注