一.JDBC中事务的写法
复制代码
@Test
public void testTransactionWithTryResource() {
// try-with-resources 自动关闭连接/Statement
try (Connection conn = getConn()) {
// 1. 开启手动事务
conn.setAutoCommit(false);
// 2. 执行批量操作
try (PreparedStatement ps1 = conn.prepareStatement("UPDATE t_account SET balance = balance - 100 WHERE name = 'A'");
PreparedStatement ps2 = conn.prepareStatement("UPDATE t_account SET balance = balance + 100 WHERE name = 'B'")) {
ps1.executeUpdate();
ps2.executeUpdate();
// 3. 提交事务
conn.commit();
System.out.println("转账成功!");
} catch (Exception e) {
// 4. 回滚事务
conn.rollback();
System.out.println("事务回滚!");
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
二.事务回滚导致不同的连接导致结果仍被修改的一些问题