事物(mysql)--- 案例模拟转账功能。

一.目的

 记录今天学的mysql事物,案例模拟转账功能。

二.事物

     2.1 什么是事物

          某件事有N个组成单元,要么这几个单元同时成功,要么同时失败。也就是将N个单元放在一个事物中,由事物控制这N个单元是否成功(必须是N个单元同时成功或失败)!

     2.2 mysql事物

           默认的事物:一条sql语句就是一条事物,默认就开启事物、提交事物。

           手动事务:

                1)显示的开启一个事务:start transaction

                2)事务提交:commit代表从开启事务到事务提交 中间的所有的sql都认为有效 真正的更新数据库

                3)事务的回滚:rollback 代表事务的回滚 从开启事务到事务回滚 中间的所有的 sql操作都认为无效数据库没有被更新

三.JDBC 事物操作

     默认是自动事务:

        执行sql语句:executeUpdate()  ---- 每执行一次executeUpdate方法 代表 事务自动提交

    通过jdbc的API手动事务:

          开启事务:conn.setAutoComnmit(false);

          提交事务:conn.commit();

          回滚事务:conn.rollback();

     注意:控制事务的connnection必须是同一个

     执行sql的connection与开启事务的connnection必须是同一个才能对事务进行控制

四.DBUtils 事物操作 

  1. QueryRunner

           有参构造:QueryRunner runner = new QueryRunner(DataSource dataSource);

           有参构造将数据源(连接池)作为参数传入QueryRunner,QueryRunner会从连 接池中获得一个数据库连接资源操作数据               库,所以直接使用无Connection参数 的update方法即可操作数据库

 

           无参构造:QueryRunner runner = new QueryRunner();

           无参的构造没有将数据源(连接池)作为参数传入QueryRunner,那么我们在使 用QueryRunner对象操作数据库时要使              用有Connection参数的方法

五.模拟转账功能

      https://github.com/loki0000/TransgerAccounts2   

   

 

你可能感兴趣的:(java,web)