模拟银行账户转账业务

一、需求分析

需求:
实现任意两个账户间转账操作,要求当转账过程出现异常时,转账方与被转账方的转账操作同时失败。

实现:
Spring 事务,在数据层或业务层保障一系列的数据库操作同成功同失败。

分析:
① 数据层提供基础操作,指定账户减钱,指定账户加钱;
② 业务层提供转账操作,调用减钱与加钱操作;
③ 提供两个账号和操作金额执行转账操作;
④ 程序正常执行时账户金额 A 减 B 加没有问题,当程序出现异常后,也要保证双方账户加减操作的一致性,也就是说异常出现前后的业务都应是失败的状态;
⑤ 基于 Spring 整合 MyBatis 环境搭建上述操作。

二、核心代码

1. 业务层添加 Spring 事务管理

//@Transactional标签添加事务管理
@Transactional
public interface AccountService {
    
    
    public void transfer(String outUname, String inUname, int money);
}

① Spring 注解式事务通常添加在业务层接口中,而不会添加到实现类中,为了降低耦合;
② 注解式事务可以添加到业务方法上表示当前方法开启事务,也可以添加到接口上表示当前接口所有方法开启事务。

2. 配置类中设置事务管理器

 //设置事务管理器
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
    
    
    DataSourceTransactionManager ptm = new DataSourceTransactionManager();
    ptm.setDataSource(dataSource);
    return ptm;
}
    

在这里插入图片描述

事务管理器要根据实现技术进行选择,MyBatis 框架使用的是 JDBC 事务!

3. 开启注解式事务驱动

@EnableTransactionManagement 注解用于开启注解式事务驱动。

在这里插入图片描述

三、相关截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_52861684/article/details/130545419