- 业务层需要操作多数据源的方法上加上 @DSTransactional
@Override
@DSTransactional
public boolean remove(Long id) {
// 删除主库计划
baseMapper.deletedPlan(id);
// 删除主工单
baseMapper.deletedOrder(id);
// 删除子库工单
baseMapper.deletedLmsOrder(order.getOrderCode());
// 手动抛异常主子库全部回滚
int i = 1 / 0;
}
- Mapper 需要用 @DS(“master”) 指定数据源
@DS("master")
void deletedPlan(Long id);
@DS("master")
void deletedOrder(Long id);
@DS("servant")
void deletedLmsOrder(String orderCode);
单服务两个注解即可搞定 多数据源事务一致性