TransactionTemplate
在Spring框架中,TransactionTemplate
是一个用于编程式事务管理的工具类。它提供了一种在代码中显式控制事务边界的方式,使开发人员可以在方法级别定义事务的开始和结束点。TransactionTemplate简化了事务管理的操作,同时提供了一些附加功能,如事务传播行为和异常回滚。
TransactionTemplate
提供了execute()方法,该方法接受一个TransactionCallback
作为参数,并在事务的上下文中执行其中的代码。
TransactionCallback
是一个接口,调用execute()方法的时候可以使用匿名内部类的方式,也可以使用它提供的实现类,本次采用实现类的方式。
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);
}
标签:事务管理,回滚,编程,userMapper,事务,TransactionTemplate
From: https://www.cnblogs.com/zgf123/p/18215779