编程式事务(Programmatic Transaction)是一种通过代码显式地管理事务的方式,而不是依赖声明式事务(Declarative Transaction)中使用的注解或 XML 配置。在编程式事务中,开发人员通过编写代码来开启、提交和回滚事务,以精细控制事务的边界和行为。

使用

TransactionTemplate是一个简化了事务管理的工具类,可以避免直接处理 TransactionStatus

@Service
public class MyService {
 
    @Resource
    private TransactionTemplate transactionTemplate;
 
    @Resource
    private MyMapper myMapper;
 
    public void myTransactionalMethod() {
        transactionTemplate.execute(status -> {
            try {
                // 业务逻辑代码
                myMapper.insertSomething(...);
 
            } catch (Exception ex) {
                status.setRollbackOnly(); // 标记事务为回滚
                throw ex; // 重新抛出异常
            }
            return null;
        });
    }
}