springboot 手动提交事务
时间: 2023-09-28 12:07:45 浏览: 140
在 Spring Boot 中,我们通常使用注解声明式事务管理来自动提交或回滚事务。但是,有时候我们可能需要手动提交事务,比如在某些特殊情况下需要在多个事务中共享数据时。在这种情况下,我们可以使用编程式事务管理,手动提交事务。
下面是一个手动提交事务的示例代码:
```java
@Service
public class UserService {
@Autowired
private DataSource dataSource;
public void updateUser(User user) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = dataSource.getConnection();
conn.setAutoCommit(false); // 关闭自动提交事务
pstmt = conn.prepareStatement("UPDATE user SET name = ? WHERE id = ?");
pstmt.setString(1, user.getName());
pstmt.setLong(2, user.getId());
pstmt.executeUpdate();
conn.commit(); // 手动提交事务
} catch (SQLException e) {
if (conn != null) {
try {
conn.rollback(); // 回滚事务
} catch (SQLException ex) {
ex.printStackTrace();
}
}
e.printStackTrace();
} finally {
try {
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在这个示例代码中,我们首先获取了一个数据库连接,并将自动提交事务功能关闭。然后执行了一个更新操作,并手动提交事务。如果发生异常,我们将回滚事务,否则关闭连接。
需要注意的是,手动提交事务的时候,必须先关闭自动提交事务功能,否则手动提交不会生效。同时,如果手动提交事务失败,需要进行回滚操作,否则事务就会处于未知状态,可能会影响后续的操作。
阅读全文
相关推荐








