项目中多个数据源查询解决方案

本文分享了一次跨库查询需求的解决过程,从最初的多数据源AOP切换方案,到发现可以直接利用单一用户下的多库资源,大幅简化了查询流程,提高了效率。作者通过SpringBoot+Mybatis实现了这一优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近接到个需求,是这样的,公司的项目组拆分,然后根据业务拆分了不同的数据库,然后公司的运营老是有这种报表需求,需要跨库查询,所以想做成页面,这样就不用了每天去手动的查询sql了。

思维大坑

大家都知道,如果是在Navicat中如果涉及到跨库直接库名.表名,就可以了,但是放在应用中该怎么去写sql啊,然后我就去论坛,博客,一顿搜方案,然后就确认了一种方案,就是,在配置文件中配置多个数据源,然后用AOP的方式去实现切换数据源。然后通过代码逻辑拼装多个数据源查询到的结果,虽然这种比较麻烦,但是也交差了啊。

思考

但是查询实在是太慢了,来回的切换数据源,然后用代码在去拼装,耗时,耗力。然后我又回到起点。如果有个用户,所用的库都在这个用户下,那是不是也可以看成一个数据源,那么咱们的这种跨库其实就是跨表查询了。数据库如下图
在这里插入图片描述
ps:如上图,我们是在这个用户,那我们在Navicat中写sql,就可以这样
在这里插入图片描述

实践

我用的是springboot+mybatis,所以我就写了个demo,然后直接像上面这种方案去写了个sql,结果可以查询到结果,一个这么简单的东西,让我搞得这么复杂,我都快要蠢死了,一开始要去自己动手试下,也不会浪费这么多时间去搞什么AOP切换数据源之类的操作了。

注意

大家要注意下,我说的多数据源是数据库都在一台服务器上的多数据源,如果多个数据源不在同一台服务器上,那有可能需要我最初的那种AOP切换数据源的需求。最后希望大家要多动手,有的时候想的和实际其实偏离太大,也告诫下自己。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值