2018-09-15JDBC事务详解1

在事务里面SELECT,查询的也是事务日志里面的内容!

什么是事务?

一件事情有N个组成单元,要不这N个组成单元同时成功,要不N个单元就同时失败,就是将n个组成单元放到一个事务中(例如转账,张三账户减500元的同时,李四账户要加500元)!

MySQL事务:

①  默认事务:一条SQL语句默认开启事务,并提交事务!

②  手动事务:

1;显式的开启事务:start transaction

2;提交事务:commit(当开启了事务,写完SQL语句并不执行,而是写入事务中,等待commit命令才开始执行)!

3;事务回滚:rollback(当开启了事务,要么提交事务,要么事务回滚,当提交了事务之后,不可以再执行事务回滚)!

JDBC事务:

①  默认事务:excuteUpdate()方法,每一次执行该方法,代表事务自动提交!

②  手动事务:

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

2;提交事务:conn.commit();

3;事务回滚:conn.rollback();

//注意:操作一系列事务的Connection对象,必须是同一个,为了保证该条件,引入了ThreadLocal这个容器,在该操作是单线程的前提下,这个容器带着唯一的Connection对象,让程序在一次请求中的任何位置,都能获取该对象!

DBUTils事务操作:

QueryRunner

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

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

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

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

猜你喜欢

转载自www.cnblogs.com/postgredingdangniu/p/9650037.html