您的位置:首页 > 文旅 > 美景 > Spring boot + mybatis plus 多数据源

Spring boot + mybatis plus 多数据源

2024/10/6 2:27:48 来源:https://blog.csdn.net/fearlessnesszhang/article/details/141169521  浏览:    关键词:Spring boot + mybatis plus 多数据源

有参照链接: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)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com