00:00
接下来呢,咱们一块呢,看一看,我要演示这个被管所乐管所最起码应该有两个Java程序,对吧?来咱们试试啊,Out insert,咱们新建一个类class,我们叫JDBCT的幺三。OK,嗯,我们应该再建一个吧,是不是,哎,我们应该再建一个啊。GDPCTXT14啊。行,那这块咱们在演示的时候,我们怎么演示呢?就是我们这个程序开启一个什么事务。对吧,哎,这个事物专门进行什么查询,并且使用什么行级锁,或者叫什么悲观锁吧,悲观锁啊,锁住什么相关的什么记录。
01:04
那这个程序呢,这个程序我们负责什么,这个程序负责修改什么被锁定的什么记录,行吧,好,那咱们就来写代码,各位。咱们这个代码我觉得不用写,写啥呀,复制呗,这个查询这块,咱们从哪从哪块复制比较好。第12个版本是干啥的?行,就这个吧,这不有那个啊,咱们写写吧,咱们写写吧,我觉得没必要,为啥呢?因为咱们有工具类了,也写不了几行代码,是写谁下,应该调用connection的一个dlu.get dlu.get connection方法,这个方法有异常,我们给它处理一下是不是,哎翻译的这一块加上去dbu to,点什么DB to.close好关闭这块是connection呗,这个不就是吗?这个不就是结果集对不对?哎,给它关了就行了,那在这块呢,咱们关掉之后啊。
02:41
再往下这块应该怎么做呀,connection.set false是不是connection点什么呗,是不是在这呢?我们就如果说connection要是不等于none的话,我们把这个connection它的一个back写上是吧,然后加上去个什么呀。
03:01
能看懂吧,哎,这个位置其实就是什么呀,叫开启什么开启事务了,那这边其实就是提交事务啊,提交15,那这边是不是标志着事五的结束啊,哎,15结束,那问大家回滚事物算不算15结束啊,哎,这是回滚事五啊,那这边其实也是事物了吗?结束啊,一样的一样的,各位啊,那开启事物跟提交事务中间我们在这里写一个SQ语句,各位这个SQ语句这样写的,各位看好啊,Select e内jobary from e啊这张表,然后wi条件是什么呢?Job等于问号,接下来编译connection,直接编译这个S语句,编译这个SL语句之后呢,我们直接给问号传值S给这个问号传什么值,我们就传manager吧,工作岗位等于manager的这些员工的信息,我是不是给他查出来呀,后面一定要加上一个什么for update,明白哎,For update。
04:02
能看懂吗?那么接下来在这呢,我们就执行结果及返回就行了,返回结果及Y要循环RS.next如果有数据的话,我们把它输出,输出RS的get string呗,第一个是谁呀?E name啊,加上一个逗号吧,好,这大家能看懂吧,点get什么get string呗,第二个是谁呀?工作岗位吧,第三个的话,我们再加一个什么逗号,我们再加上一个什么,这个RS.get什么。Double叫salary,懂吗?哦,写错了。这个是不是取这个呀。第二个就取这个岗位呗,第三个就是取这个薪资啊,这代码还行吧,我执行一下,先执行一下各位啊,先执行一下看看。没啥问题吧,能查出来就行了啊,那接下来另外一个程序我们干啥呀。
05:03
修改修改是不是修改锁定的记录啊来,那接下来咱们就来修改一下啊,还得写一遍各位啊,Connection connection等于空迪,注意听啊,这有新的知识点啊,Prepare的statement PS等于空对不对?接下来再往下结果期你还需要不需要,因为只是修改吧,哎,那么接下来实际上就是connection也等于DB u.get connection方法,然后呢,TRY给它一写就完事,再往下加一个finally,我问大家释放资源怎么做?DB.close第一个参数肯第二个参数,第三个参数没有怎么办?No聪明啊,这是我昨天没讲的。这个位置传个那就行了,为什么可以传个,那因为我这个判断呀。我这是不是有判断啊,等于不等于那的时候是不是再关啊,等于那的话,我是不是不理它啊,所以说这个你得知道啊,得知道这个。
06:00
来接下来咱们再往下,再往下就是connection点什么set out to commit false对吧?Connection点什么呀,Commit提交,然后这边呢,如果说connection不等于now的话,我们把connection怎么着啊,给它back是吧,Out回车加,然后接下来在这个地方我们开启事务提交,事务之间我们写一条搜狗语句,这条语怎么写啊,这几张表EP什么salary等于salary乘以。1.1什么意思?薪资加薪10%嘛。对不对?Where条件是什么呢?Job等于问号能看懂吗?因为我们修改的记录必须是您第一个程序锁定的记录,你锁的记录是谁?Manager工作岗位等于manager的数据给它锁了,所以这块呢,我们需要编译SQL,编译这个SQL语句之后呢,我们就给这个SQL语句干什么呀?传值传什么值啊,String一共一个问号,传一个什么值啊,是不是好?那么接下来我们是不是去执行啊,各位execute什么update执行返回一个什么更新的记录条数吧,然后输出count就可以了。
07:23
好,这个大家能看懂吧。没什么疑问吧?好,这就是另一个程序。啊,这个是第一个程序。那我应该怎么做呢?这个东西怎么演示呢。我怎么能演示出来,我是不是必须得先加断点,不加断点是不是不行,我在commit大家看清楚啊,我在connection这个地方,我加一个断点行吗?我问大家,只要这个不结束,只要这行代码不执行。
08:04
是不是这个事务就没结束?事务没结束,是不是这个工作岗位等于manager的记录,由于加上一个悲观锁,是不是就锁住了我同时再去运行另外一个程序?我看看能不能锁住。应该是这个更新的这个程序是不是根本就执行不了,是不是一直在这卡的呀,来走一个啊,先看13啊各位13走一个啊,咱自己仔细看啊,仔细看debug吧,好debug好,我们来看这个程序应该能查询出结果并且输出。呃,这个位置呢,有一个。诶,不是这个吧,是这个吗。就是这个,应该就是这个。是这个是吧。卡这了呗。那我先让他结束一下,我再重新来啊。
09:05
哦。嗯,我再执行一下,但这个是没有走断点是吧。得点一下这个吧,嗯,再重新来。是这个吧,好,现在到这了啊,接下来14在这干什么?运行吧,我直接运行,不用debug运行就行运行。你看你看。他要是能运行这个地方是出来三对吧。是不是一共有三条记录锁住了呀,没出来吗?三没出来,那现在我让谁结束,我让这个结束,大家注意看啊这个啊。怎么结束debug?点这个。行吧,别点这个啊,点这个杀死杀死啊,来点这个结束了啊,我只要一结束是不是这个run这个窗口这个位置,是不是应该在这输出一个三。
10:08
这这不14吗?14在那卡住了呀,卡死了呀,我现在让13结束啊,让13结束debug打开,打开之后他结束。妥了,回头看看。14这块三是不是出来了,所以这块呢,想给大家演示的是什么呢?哎,就是说啊,咱们如果说以后有这种需求的话,我希望能想起来今天的这个内容啊,是在select后面加一个for update,就表示行机所给锁住了,别的事物呢,没办法执行,只能等当前的这个事物怎么着结束,别的事物才能对这个锁定的技术操作啊,这就是我们JDBC当中最后一个知识点,其实你想想这个跟JDBC到底有多大关系,没关系,这其实是一个搜狗语句对吧?哎,这其实是搜狗语句后面有这么一个东西,另外这块呢,我给大家简单介绍了一下,咱们悲观所,乐观所这种机制,到后期的时候你们还会去接触的啊。
11:00
行了,那JDBC的这个课程咱们就终结了,各位啊,这块的内容咱们结束了,下节课呢,我们将开启新的技术,这个技术和Java没关系,跟circle也没关系,跟JDBC也没有关系,各位啊,是浏览器上的前端,Web前端啊,HTMLCSS和javascript这块的东西。啊,休息一下。
我来说两句