TransactionTemplate编程式事务的使用

TransactionTemplate

在Spring框架中,TransactionTemplate是一个用于编程式事务管理的工具类。它提供了一种在代码中显式控制事务边界的方式,使开发人员可以在方法级别定义事务的开始和结束点。TransactionTemplate简化了事务管理的操作,同时提供了一些附加功能,如事务传播行为和异常回滚。

TransactionTemplate提供了execute()方法,该方法接受一个TransactionCallback作为参数,并在事务的上下文中执行其中的代码。

TransactionCallback 是一个接口,调用execute()方法的时候可以使用匿名内部类的方式,也可以使用它提供的实现类,本次采用实现类的方式。

image

TransactionCallbackWithoutResult 是 Spring 框架中的一个接口,用于在编程式事务管理中执行一段事务性操作。它允许您定义一个不返回结果的回调函数,在这个函数中执行数据库操作,并且支持事务的提交和回滚。

下列是一个demo,用于实现事务的回滚。

 @GetMapping("test")
    public List<User> test(){
        User zgf = userMapper.selectById(1);
        User zsf = userMapper.selectById(2);
        transactionTemplate.execute(new TransactionCallbackWithoutResult(){
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {
                try{
                    zgf.setAge(30);
                    zsf.setAge(30);
                    int i = 10 / 0;
                    userMapper.updateById(zgf);
                    userMapper.updateById(zsf);
                }catch (Exception e){
                    System.out.println("事务回滚");
                    status.setRollbackOnly();
                }
            }
        });
        return userMapper.selectList(null);
    }
posted @   自学Java笔记本  阅读(1232)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示