//自己平时的一点笔记 在对数据库数据进行修改操作时,当代码中出现异常时,那么事物就会进行回滚操作,数据库内的数据将不会被修改;但总是会有一些需要就是即使代码中途报错了,也要将数据库中的数据进行修改,这时,就需要重新开启一个事物去提交;
方法一:运用注解 @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); } 结果:数据也可以新增进数据库