案例:AA给BB转账1000元,如果转账过程中出现异常,会出现AA完成了转账,但是BB却没有受到钱,在此使用事务回滚机制
AA 2000
BB 2000

public class AccountDemo {
    public static void main(String[] args) {
        //1.获取数据库连接对象
        Connection connection = JDBCUtils.getConnection();
        PreparedStatement ps = null;
        try {
            connection.setAutoCommit(false);//事务 : 禁止自动提交
            //2.sql语句
            String sql = "update account set balance=? where name=?";
            //3.预编译
            ps = connection.prepareStatement(sql);
            //AA账号的值
            ps.setInt(1, 1000);
            ps.setString(2, "a");
            //执行sql
            ps.executeUpdate();

            System.out.println(1 / 0);//制造一个异常

            //BB账号的值
            ps.setInt(1, 3000);
            ps.setString(2, "b");
            //执行sql
            ps.executeUpdate();
            //如果没有发生问题
            connection.commit();//事务 : 事务提交
        } catch (Exception e) {
            e.printStackTrace();//打印异常信息
            //事务回滚
            try {
                connection.rollback();//事务 : 事务回滚
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        } finally {
            //允许自动提交
            try {
                connection.setAutoCommit(true);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            //关闭资源
            JDBCUtils.close(connection, ps);
        }


    }
}