当前位置: 首页 > news >正文

Java中MybatisPlus使用多线程多数据源失效

Java中MybatisPlus使用多线程多数据源失效

文章目录

  • Java中MybatisPlus使用多线程多数据源失效
    • 一:背景
    • 二:解决方法
    • 三:其他导致@DS失效的条件
      • 3.1、@Transactional

一:背景

Mybatis-Plus使用异步任务后不能找到指定设置的@DS数据库,所有请求指向了主数据库

二:解决方法

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
public void saveInventoryFlow(Long orgKkd, String orgNameKkd, List<SaveAbInventoryFlowReq> requests) {if (ObjectUtil.isEmpty(requests)) {return;}CompletableFuture.runAsync(() -> {DynamicDataSourceContextHolder.push("qjs");List<TemInventoryFlow> list = requests.stream().map(request -> {TemInventoryFlow abInventoryFlow = new TemInventoryFlow();BeanUtils.copyProperties(request, abInventoryFlow);abInventoryFlow.setOrgId(orgKkd);return abInventoryFlow;}).collect(Collectors.toList());temInventoryFlowRepo.saveBatch(list);DynamicDataSourceContextHolder.clear();}, poolExecutor);
}

三:其他导致@DS失效的条件

3.1、@Transactional

Spring的@Transactional声明式事务管理时通过动态代理实现的。

解决方法:
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
http://www.lryc.cn/news/622317.html

相关文章:

  • Vue 侦听器(watch 与 watchEffect)全解析3
  • 如何在 FastAPI 中玩转 APScheduler,让任务定时自动执行?
  • 快速了解PCA降维
  • 《Python列表和元组:从入门到花式操作指南》
  • 接口自动化测试步骤
  • Stability AI技术浅析(二):LDM
  • productionSourceMap:true -> 编译的时候不是那么乱码了
  • 详解 k 近邻(KNN)算法:原理、实践与调优 —— 以鸢尾花分类为例
  • C++面试——内存
  • docker重启或系统重启后harbor自动启动
  • MySQL快速恢复数据的N种方案完全教程
  • 口播数字人免费API调用方案
  • MC0439符号统计
  • 【学习笔记】NTP服务客户端配置
  • 9.对象介绍
  • 2025年COR SCI2区,泊位分配、岸桥分配与引航调度的集成规划,深度解析+性能实测
  • 下载及交叉编译zlib库,记录
  • 解决 MySQL 查询速度缓慢的问题
  • 力扣400:第N位数字
  • 【CUDA 编程思想】FusedQKVProj-分组量化矩阵乘法高效实现全流程解析
  • AutoSar AP平台中EM,CM,SM,PHM,LT等AP基础软件都有宿主进程吗
  • 【swift】SwiftUI动画卡顿全解:GeometryReader滥用检测与Canvas绘制替代方案
  • 超分——对比学习(Contrastive Learning)
  • mysql-DDLy语句案例
  • Unity 实现逼真书本翻页效果
  • 电子电气架构 --- 线束设计一些事宜
  • Linux软件编程-进程(2)及线程(1)
  • TDengine IDMP 高级功能(2. 事件模板)
  • 低资源语言翻译:数据增强与跨语言迁移学习策略
  • 第二十四天:虚函数与纯虚函数