//自己平时的一点笔记
在对数据库数据进行修改操作时,当代码中出现异常时,那么事物就会进行回滚操作,数据库内的数据将不会被修改;但总是会有一些需要就是即使代码中途报错了,也要将数据库中的数据进行修改,这时,就需要重新开启一个事物去提交;
- 方法一:运用注解 @Transactional(propagation = Propagation.REQUIRES_NEW)
//propagation = Propagation.REQUIRES_NEW 新开启了一个事物
@Transactional
public void user(){
this.insertUser(user);
int aa = 10 / 0;//这里会报错
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void insertUser(User user){
this.save(user);
}
结果:可以新增数据到数据库
- 方法二:直接写代码提交
@Autowired
private PlatformTransactionManager transactionManager;
@Transactional
public void user(){
this.insertUser(user);
int aa = 10 / 0;//这里会报错
}
public void insertUser(User user){
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);//新发起一个事务
TransactionStatus status = transactionManager.getTransaction(def);
this.save(user);
transactionManager.commit(status);
}
结果:数据也可以新增进数据库
版权声明:本文为weixin_45299175原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。