一个事务中先保存后查询 再修改 怎么做不影响事务回滚
时间: 2023-07-30 20:07:31 浏览: 57
在一个事务中,如果先保存后查询,再修改数据,需要保证修改操作也在同一个事务中,并且不影响事务回滚。可以参考以下代码实现:
```
// 开启事务
TransactionStatus transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
try {
// 执行保存操作
userMapper.save(user);
// 执行查询操作,此时已经提交了保存操作,可以查询到数据
User savedUser = userMapper.findById(user.getId());
// 执行修改操作,需要保证在同一个事务中
savedUser.setName("newName");
userMapper.update(savedUser);
// 提交事务,保存和修改操作都会提交到数据库中
transactionManager.commit(transactionStatus);
} catch (Exception e) {
// 回滚事务
transactionManager.rollback(transactionStatus);
}
```
在这段代码中,先开启一个事务,执行保存操作并提交事务,然后在同一个事务中执行查询操作,查询到保存的数据,并执行修改操作,最后再提交事务,将保存和修改操作都提交到数据库中。如果在执行保存、查询、修改或提交事务的过程中发生异常,会触发事务回滚,保证保存和修改操作都不会影响到数据库中的数据。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)