系列四十二、Spring的事务传播行为案例演示(二)#REQUIRED

一、演示Spring的默认传播行为(REQUIRED)

1.1、运行之前表中的数据

1.2、StockServiceImpl

java 复制代码
/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/10/30 15:43
 * @Description:
 */
@Service(value = "stockServiceREQUIRED")
public class StockServiceImpl extends ServiceImpl<StockMapper, StockDO> implements StockService {

    @Resource
    private StockMapper stockMapper;

    @Resource
    private IntegralService integralService;

    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    @Override
    public void reduceStock(Long id, Integer num) {
        try {
            // 减库存
            StockDO dbStock = stockMapper.selectById(id);
            StockDO updateStock = new StockDO();
            BeanUtils.copyProperties(dbStock, updateStock);
            updateStock.setNum(dbStock.getNum() - num);
            stockMapper.updateById(updateStock);

            // 增加积分
            IntegralDO updateIntegral = new IntegralDO();
            updateIntegral.setPreIntegral(0);
            updateIntegral.setCurrentIntegral(1000);
            updateIntegral.setUserId(1L);
            integralService.addIntegral(updateIntegral);

            // 模拟异常
            int i = 10 / 0;
        } catch (BeansException e) {
            throw new RuntimeException(e);
        }
    }
}

1.3、IntegralServiceImpl

java 复制代码
/**
 * @Author : 一叶浮萍归大海
 * @Date: 2023/10/30 15:42
 * @Description:
 */
@Service(value = "integralServiceREQUIRED")
public class IntegralServiceImpl extends ServiceImpl<IntegralMapper, IntegralDO> implements IntegralService {

    @Resource
    private IntegralMapper integralMapper;

    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
    @Override
    public void addIntegral(IntegralDO updateIntegral) {
        integralMapper.insert(updateIntegral);
    }
}

1.4、测试结果

1.5、数据变化

stock表中的库存数量没有发生变化,integral(积分表)表没有增加积分。符合预期

相关推荐
Sunlight_77732 分钟前
第六章 QT基础:9、Qt中数据库的操作
数据库·qt·oracle
凭君语未可1 小时前
详解 MyBatis-Plus 框架中 QueryWrapper 类
数据库·oracle·mybatis
PXM的算法星球3 小时前
Elasticsearch--自带“搜索引擎“的数据库
数据库·elasticsearch·搜索引擎
理想奋斗中3 小时前
快速上手非关系型数据库-MongoDB
数据库·mongodb·nosql
Themberfue3 小时前
Redis ⑧-RESP | 渐进式遍历 | 数据库管理
数据库·redis·sql·缓存
刀一寸3 小时前
PGSql查看表结构以及注释信息
数据库·sql
XY.散人4 小时前
初识Redis · 缓存
数据库·redis·缓存
zyxzyx6664 小时前
Redis实现分布式锁
数据库·redis·分布式
C灿灿数模4 小时前
2025五一杯数学建模C题:社交媒体平台用户分析问题;思路分析+模型代码
数据库·人工智能·python
m0_377595906 小时前
Flinkcdc 实现 MySQL 写入 Doris
mysql·flink·doris·flinkcdc