[JDBC]事务

一.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();
    }
}

二.事务回滚导致不同的连接导致结果仍被修改的一些问题

相关推荐
小王不爱笑13210 小时前
SpringBoot 自动装配深度解析:从底层原理到自定义 starter 实战(含源码断点调试)
java·spring boot·mybatis
森林里的程序猿猿10 小时前
Spring Aop底层源码实现(一)
java·后端·spring
阿达_优阅达10 小时前
告别手工对账:xSuite 如何帮助 SAP 企业实现财务全流程自动化?
服务器·数据库·人工智能·自动化·sap·企业数字化转型·xsuite
IvorySQL10 小时前
IvorySQL v5 发布后,我们想听听大家的使用体验
数据库·postgresql·开源
ℳ๓₯㎕.空城旧梦10 小时前
C++中的解释器模式
开发语言·c++·算法
Maverick0610 小时前
01- Oracle核心架构:理解数据库如何运转
数据库·oracle·架构
TDengine (老段)11 小时前
TDengine IDMP 组态面板 —— 画布
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
JdayStudy11 小时前
SIR 网络传播仿真软件说明书
开发语言·网络·php
buhuimaren_11 小时前
MySQL数据库初体验
数据库·mysql
IvorySQL11 小时前
PostgreSQL 技术日报 (3月20日)|PGConf.dev 2026 日程公布
数据库·postgresql·开源