springboot+mybatis框架,怎么手动控制事务
时间: 2024-01-14 09:01:58 浏览: 115
Spring+MyBatis的事务控制
5星 · 资源好评率100%
在 Spring Boot 中,可以使用 @Transactional 注解来控制事务。要手动控制事务,需要在方法上添加 @Transactional 注解,并设置 propagation 属性为 Propagation.REQUIRES_NEW,这样就会启动一个新的事务,而不是使用当前事务。
以下是一个手动控制事务的示例:
```
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void addUser(User user) {
try {
userMapper.addUser(user);
} catch (Exception e) {
// 如果发生异常,手动回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
throw e;
}
}
}
```
在上面的代码中,我们在 addUser 方法上添加了 @Transactional 注解,并设置 propagation 属性为 Propagation.REQUIRES_NEW。这样,当 addUser 方法被调用时,就会启动一个新的事务,并且只有当 addUser 方法执行完毕并且没有发生异常时,才会提交事务。如果 addUser 方法发生异常,就会手动回滚事务。
需要注意的是,如果要手动控制事务,需要在类上添加 @Transactional 注解。如果在方法上添加 @Transactional 注解,Spring 会忽略该注解。
阅读全文