00:00
行了,咱们接着再往下看啊,再往下。再往下这块呢,咱们这个,呃。还有一个关于事物的一个代码,就JDBC事务。我们之前说那个事物是在MYSQL的数据库当中,对吧。嗯。现在就是我们如果是Java代码的话,我们怎么去控制这个事物。那咱们一块来看看吧,行吧,来来看看啊。JDBC当中啊,它是对这个事物是怎么控制的啊,其实我可以先给大家说一下这个结论啊,就JDBC当中的事物啊,它是自动提交的。
01:03
JDBC啊中的事务是自动提交的。什么什么什么意思啊,什么什么是自动提交,这个自动提交就是说只要什么。执行任意一条什么DML语句则自动怎么着提交一次,这种方式显然是不符合我们这个。实际的开发对吧,因为在实际的开发过程当中,我们一般是。在同一个业务流程当中。捆绑的多条SQL语句必须同时成功或者是同时失败。对吧,哎,所以说这个呢,可能是肯定啊,是不符合我们的一个要求的啊,只只只要执行任意一条电码一次,自动提交一次,这是JDBC,这是JDBC,这是JDBC默认的事故行为。
02:07
但是在实际的业务当中,通常都是N条什么DML语句共同联合。才能完成的。必须保证他们这些DML语句。在同一个事物中同时成功或者同时失败。我们先来验证一下。以下程序啊,这样以下程序啊,先来干什么呢?验证一下。JDBC的事务。是否是?
03:00
自动提交机制行吧,验证一下各位。这个好验证吗?不难吧?那你就在一个程序里边写几个,写几个更新语句,你比如说你写。你写上两个更新语句行不行?可以吧,来咱们就把这个代码复制一下,各位啊,看这个。扶持一下。啊,复制过来,然后放到这呗。行了,那这块的代码咱们全删了啊。删掉啊,不要了。然后这块是执行是不是删掉都不要第三步和第四步空着。这个代码能看懂吗?好,那来吧,咱们在这呢写一条搜后语句啊,搜Q1啊SOQ1UPDATE哪张表。
04:03
第pd set谁啊d name吧啊DNA,然后呢。外条件是什么呢?第一批number。或者说就写一写一个词就行啊,接下来我们可以对这条词汇语进行编译吧。是吧?编译之后呢,我们需要给这个SQL语句的第一个问号和第二个问号干什么?传值set,给第一个问号传一个值。我们传一个X部门。然后PS set in给第二个问号传值,我们传六,诶,60还在吗?不在了吧?好,大家看,现在是我把30部门,他的部门名字给他改成部门,能看懂吗?
05:02
我执行。这个时候有句。怎么执行啊?是吧,接下来我重新怎么着,给占位符干什么?传值行不行?我把它拿过来放到这儿。第一个问号我这次传什么呀?Y部门,第二个问号我传20。也就是说,我将20部门的部门名改成什么Y部门?能看懂吧。来这个位置输出count,这个程序能看懂吗?
06:00
也就是说现在在这个位置只有一条SQL语句,我第一次呢,给这第一个问号传的是X部门,也就是说第二个问号我传的是30部门,呃,30部分编号,也就是说整个这一部分是为了做一件事。将30部门的部门名称给它改成什么X部门,下面这段代码是把20部门的部门名称给改成什么Y部门啊,就是第一次给谁站位符干什么传值我在这里执行第一条什么什么语句啊,对语句紧接着在这个位置,我是不是就相当于是执行第二条update的语句啊,对吧?哎,第二条各位我在这里啊,我加一个断点。行吧,我加个断点程序呢,在这个位置呢,我执行一下啊。好了,大家看现在程序已经执行到断点这一块了,这说明这个有没有执行。
07:04
已经执行了,并且看的这个值等于几一对不对?好,那么接下来我最关心的是数据库里边数据到底变没变,这是我最关心的,如果数据库里边数据变了,这说明什么?这说明在这是不是提交了,来我们看一下啊刷新。变了也是,他这个程序是不还没有结束,只是执行了一条语句,他就提交了数据库就改变了。这显然不符合我们的一个需求,因为在实际的开发过程当中,我们这个一般都是多个DML语句共同联合起来才能完成这个事儿,你说你现在执行一条就给我提交,那万一后边要失败了呢?你后边失败了,你还来得及吗?这个数据都已经改了,硬盘上都已经改了,对不对,所以显然这个是不行的。啊,这是不行的。
08:01
啊,我们再往下走,让他让他再往下走啊。这是什么?下一步是不是啊,下一步到哪了?这是不是,哎,下一步再执行,再执行,再执行输出又是一。是吧,哎,结束。最后呢,这个数据呢,应该是都改了。目前你可能看不出什么问题,对吧?来我们做一个银行账户转账就出问题了。我们做个转账试试。各位。这个。充分的验证了什么JDBC的事务是支持什么自动提交机制的。测试结果啊,就JDBC中只要执行任意一条什么D语句就提交一次,这是这个测试的结果,各位啊。
我来说两句