Spring boot + mybatis plus 多数据源

news/2024/9/23 2:12:52/

有参照链接:SpringBoot配置多数据源的一款框架(dynamic-datasource-spring-boot-starter) - 编程宝库

场景:A公司为总公司,B公司为分公司,B公司上传的数据需要保存到A公司中。

application.yml的配置

spring:datasource:dynamic:primary: mysql1strict: falsedatasource:mysql1:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/bn?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=trueusername: rootpassword: mima123type: com.alibaba.druid.pool.DruidDataSourcedruid:initial-size: 5min-idle: 5max-active: 20max-wait: 60000time-between-eviction-runs-millis: 60000min-evictable-idle-time-millis: 300000validation-query: SELECT 1 FROM DUALtest-while-idle: truetest-on-borrow: falsetest-on-return: falsemysql2:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/bn_1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=trueusername: rootpassword: mima123type: com.alibaba.druid.pool.DruidDataSourcedruid:initial-size: 5min-idle: 5max-active: 20max-wait: 60000time-between-eviction-runs-millis: 60000min-evictable-idle-time-millis: 300000validation-query: SELECT 1 FROM DUALtest-while-idle: truetest-on-borrow: falsetest-on-return: false

serviceImpl业务代码

    @Overridepublic List<BnUser> getBnUser1() {QueryWrapper<BnUser> b = new QueryWrapper<>();b.eq("user_name","common");List<BnUser> bnUser = bnUserMapper.selectList(b);if (bnUser != null){return bnUser;}return null;}//@DS("mysql2")@Overridepublic List<BnUser> getBnUser2() {QueryWrapper<BnUser> b = new QueryWrapper<>();b.eq("user_name","common1");List<BnUser> bnUser = bnUserMapper.selectList(b);if (bnUser != null){return bnUser;}return null;}

controller的结果

    @GetMapping("testMoreData")public void testMoreData(){List<BnUser> bnUser1 = bnUserService.getBnUser1();System.out.println("bnuser1 ===== "+bnUser1);List<BnUser> bnUser21 = bnUserService.getBnUser2();System.out.println("bnuser2 ====== "+bnUser21);/*DynamicDataSourceContextHolder.push("mysql1");List<BnUser> users = bnUserService.getBnUser1();DynamicDataSourceContextHolder.poll();//这里切换了数据源DynamicDataSourceContextHolder.push("mysql2");List<BnUser> bnUser2 = bnUserService.getBnUser2();DynamicDataSourceContextHolder.poll();System.out.println(users + "=====" + bnUser2);*/}

显示结果:

  1. serviceImpl文件并未打开 @DS -> bnuser1 有数据(mysql1);bnuser2 没有数据。
  2. serviceImpl文件并未打开 @DS -> controller中的注释打开 -> users 有数据(mysql1);bnUser2 有数据(mysql2)。
  3. serviceImpl文件打开 @DS -> bnuser1 有数据(mysql1);bnuser2有数据(mysql2)。

http://www.ppmy.cn/news/1511145.html

相关文章

Elasticsearch 实现距离查询、排序和筛选

Elasticsearch 实现距离查询、排序和筛选 前言 在现代应用中&#xff0c;位置相关的查询需求越来越普遍。无论是查找附近的餐厅、计算两个地点之间的距离&#xff0c;还是根据用户位置进行排序和筛选&#xff0c;Elasticsearch 都提供了强大的地理位置查询功能。本文将介绍如…

Ruby GUI宝典:探索顶级图形界面库

标题&#xff1a;Ruby GUI宝典&#xff1a;探索顶级图形界面库 Ruby&#xff0c;这门以优雅和简洁著称的语言&#xff0c;不仅在服务器端编程中大放异彩&#xff0c;其在图形用户界面&#xff08;GUI&#xff09;开发上同样拥有不可忽视的地位。本文将带领大家深入了解Ruby的G…

vue2中使用i18n配置elementUi切换语言

1、下载插件 npm i vue-i18n8.22.2 2、新建文件夹i18n 3、编写index.js文件 import Vue from "vue"; import VueI18n from "vue-i18n"; import locale from element-ui/lib/locale; // 引入 elementui 的多语言 import enLocale from element-ui/lib/l…

Zabbix 7.0 服务端配置文件参数参考说明

Zabbix作为一款广泛使用的开源监控系统&#xff0c;其服务器端配置涉及多个参数&#xff0c;用于定制化监控服务的行为&#xff0c;这些参数通常在zabbix_server.conf配置文件中进行设置。默认全路径为&#xff1a;/etc/zabbix/zabbix_server.conf。 以下参数来源于Zabbix 7.0版…

脚本刷导致的服务器高并发问题及解决方案

概述 在互联网服务中&#xff0c;尤其是在直播、游戏等行业&#xff0c;服务器经常面临着各种自动化脚本刷访问带来的高并发压力。这些脚本通常用于模拟正常的用户行为以达到非法目的&#xff0c;例如抢购、刷票、恶意爬取数据等。高并发不仅会消耗大量的服务器资源&#xff0…

宠物主人的精准守护--智能听诊器

宠物主人的精准守护--智能听诊器 准确性&#xff1a;选择一款准确度高的听诊器&#xff0c;让每一次检测都值得信赖。 易用性&#xff1a;用户界面简洁明了&#xff0c;让每一位宠物主人都能轻松上手。 数据共享&#xff1a;具备数据存储和共享功能&#xff0c;方便随时查看和与…

安卓相关环境配置

安卓相关环境配置 偶尔更新。。。 JEB&#xff08;动态调试好用&#xff09; JEB动态调试Smali-真机/模拟器&#xff08;详细&#xff0c;新手必看&#xff09; 夜步城 JADX官网&#xff08;静态分析&#xff09; https://github.com/skylot/jadx/releases/tag/v1.5.0 雷…

商品期权会爆仓吗?

商品期权交易中存在爆仓的情况。一个期权的价格与其基础资产的波动性密切相关。在波动性高的情况下&#xff0c;尽管收益可能更高&#xff0c;但投资者也需要面对更大的价格波动风险&#xff0c;商品期权有买方和卖方&#xff0c;买方无爆仓风险&#xff0c;卖方是保证金交易有…