TransactionTemplate编程式事务的使用
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);
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步