00:01
来看我屏幕啊。我们刚刚对这个best我们做了一些优化。在这啊,我们对它其中的增删改善方法做了一些优化,实际上是这样的,同学们,我们来说一个小的细节,我们在音色的操作,也就是我们的XQ的update。我们在执行映射的操作的时候,如果我们这一张表的主键,它是一个自增列。那么我们音色的成功之后,它应该会有一个主键值。那么在某一些场合下,这个主键的值我们是需要在音色的成功之后获取到的。因为下一步的操作,我们需要用的这个值。比如说我们有这么一个场景,大家来看一下。比如说我们有一个结账的功能。首先是这样的,我们有两张表,一个叫订单表,第一个叫订单详情表,大家首先要把这两个把它区分开。订单表当中。
01:00
他阐述了谁?在什么时间?花了多少钱买东西?具体买的是什么东西,不会在订单表里面出现,而会在订单详情表里面出现。比如说我这次结账我买了三件商品,所以会在订单详情表里面出现三条记录,大家能想象出来吗?然后我们订单详情表当中有一个外键叫订单的ID。哎,这这个订单ID他们都是一号指向这个ID,表明了这一个订单拥有三个订单详情。这个大家能接受吗?好。那我想讲的是什么?首先我们需要先对这个主表先要音色的一条记录,对不对?那这是外界吗?所以说这是主表,下面这个是总表嘛,是吧,同学们。那首先我对主表映射的一条记录,紧接着我要往子表里面去音色的三条记录,是不是同学们?
02:05
那请问一下,我在音色的这三条记录的时候,这个订单的ID我是不得知道。没错吧,我得知道这个ID,那也就意味着上面这个订单的insert的时候,我们要把这个ID要能够获取到。大家能明白吗?这就是,这就是我们在音色的时候,我们要获取到它的自增列的值,这样我们下面的操作才能拿到这个值来进行下一步的操作。这是我们所说的为什么需要要获取自尊类的这个这个这么一个场景。那下面咱们进来看一看如何去获取这个自制列,其实非常的简单。其实非常的简单,我们怎么获取呢?第一步,我们只需要。在STEM的时候,创建预处理命令对象的时候,哎,我们再加个参数呗,第一个参数是搜口语句,第二个参数叫statement点,叫return generated key。
03:02
这是第一步。第二步,我们执行完更新之后。执行完更新之后,我们再执行一下prepare statement,它的一个叫get generate key。好,执行一下就可以了。啊,执行一下,它能够获取一个结果集,然后从结果集里面去get,就可以获取自动类的值了,就这么简单,那行,下面咱们一起来写一下。跑到这个地方,因为现在呢,我们这个best,我已经把这个增删改已经写成一个通用方法了。因此呢,这边我需要做个判断,同学们。我要对这个SQL语句做个判断,如果你是update,如果你是delete,那我就不需要做任何的改动。如果你这个搜狗语句是一个音色的语句,那你这个statement就不能只带一个参数了吧?按照我们刚才的理论是不是这样的,所以我这边需要做个判断。我来写一个不值啊,叫is。In色flag,或者就直接写成叫ins色flag。
04:03
啊,默认等于false,好,然后我想做什么事情呢,如果。如果SQL语句点to upcas,我先把S语句全部转换成大写。然后点start with,如果你是以音色的开头,能看得懂吗?啊,如果你是in的开头,当然了,我们可以在这边搜狗一句,我们可以写个叫,呃,我们可以写个叫叫叫什么。我们可以写个叫chm。是不是可以把首尾的空格去掉,防止别人不小心在映射的前面加了个空格是吧?同学们,我们可以写个去。啊,但这都是小细节了啊,然后转换了大写,然后呢,如果你是以音色的开头的。那么我们就把这个值赋给音色的flag。能不能看得懂?如果你是以音色的开头的,那这个就等于true。然后我需要在这边写一下。If inside flag,如果为,那么PSMT等于点statement,搜狗一句,然后statement啊,Statement也是个接口,不着急,一会咱们就介绍到statement。
05:10
咱们先用它,里面有个常量叫return generated key就是它。那else的情况。哎,就是按照下面的方式去创建PSMT。这是第一步。创建PSMT,它的方式不一样。第二步,我们这边不是执行更新吗。啊,执行更新返回的是影响行数。好,我们把count写到这,然后咱们这边把它分开写啊,Read能看得懂吗,同学们。能看得懂吗?刚才我直接return的,现在我把它分成两行,然后我在中间PSMT点。他有个,他有个叫什么,他一个叫get generated key。就是它,它给我们返回的是一个对象。然后呢,如果我们想获取自制列,一般情况下我们自制列啊,一般第一列我们是自制列,所以。
06:01
If s.next如果有值点,注意这个点是get long,我们字字列它的类型是long类型。Get。啊,那我们就获取一。好了,这就是我们所得到的一个自增列的值,那我当前这个方法是不是返回的是影响函数啊?我的想法是,如果你执行update,如果你执行delete,那你这个就返回影响行数吧。如果你是音色的。我这个int,我就让你返回自制类的那个值。明白不?所以我就在这边写个return,但是这个是不是get弄啊。那你get弄的话,人家获取的是弄类型哎。啊,他获取的是论类型稍等啊,我给大家看一下。点get弄,你看一下它返回的是个long类型。啊,咱们是一个简单数据类型叫弄,那行吧,我首先把它强转为把它装箱啊弄类型。对吧。
07:00
然后再把它围起来,点value。可以吧,再把它返回一个整数类型,因为咱们用的是int嘛。就是这样的啊,If I next,咱们就执行这个return。写完了。好了,那咱们一起来实验一下,看看行不行啊,我们回到m po回到这里面。我们看一个看一个添加这里一个音色的,那这个I的方法是不是在我们的,呃,在哪里调用的呢?我们应该是在这个里面,在麦里面调用的是吧,同学们。我们找一下天价啊在这。天降,然后往下走,也就是在这个地方获取的嘛。添加嘛,那咱们把这个返回值接收下来,看一下行不行,同学们。能听懂吗?我把这个ID值把它接收下来嘛,或者我就写个叫key吗?行吧,同学们,我把它接收下来看一下啊,这个方法有什么问题吗?哦,这方反的是不好类型,嗯,真是的,那就这样吧,他返回的是不类型,我就不在这边写了。
08:03
我就直接跑到这个方法里面去。你这边不是直接一个什么大于零吗。嗯,是吧,同学们。匀大于零,那我就把这个数值把它接收下来啊。好,我写个,比如说写个叫呃。我就写个count算了,行吗,同学们?啊,然后return return re。Count大于零。那么在这个地方。我们把这个打印出来看一下行不行,同学们。啊,就这样子。来试试。呃,我就把断点放在这啊,重点去看一下这个变量的值。再来运行一下。就点他啊。我们直接添加吧。刚才那个草莓应该被我删掉了,那现在添加。我洗个草莓。啊,价格五块55斤OK。
09:00
添加成功。有的吧,他不是打印出来了吗?我刚才点的是运行,没有点debug吗?所以这段你没进去无所谓了,反正已经打印出来了。是不是我们上面这个这个ID值不是到37了吗?那现在获取到不就38吗。那你想想你这边所获取到这个ID值,如果我们下一步要继续把这个值留给下一步去用,那你就返回出去不就完了吗?哎,是不是这样的,同学们啊,就是这样的。好,就这么一个小细节啊,我们稍微注意一下。那行吧,我把这边注释了啊。好,我们这边写一下啊。音色的语句。音色的语句。返回的是自制列,自制列的值啊。而不是影响行数。好,这是我们自己改动的嘛,是吧,同学们OK。
我来说两句