00:00
啊,那接下来呢,我们再来说另外一个话题啊,就是呃,我们研究一下这个插入操作啊,呃,那么这个话题呢,我们主要说的是这个组件的生成方式啊,以及我们这个获取组件值啊,啊,那这个地方呢,我提一个需求,什么需求呢,就是。我想在你插入一条新的数据以后,立马去查询这一条数据。好,再来说一次啊,现在我有个需求,就是我要先插入一条数据,然后呢,我立马要再去查询到我刚刚插入的这条数据啊,这是我的一个需求。OK,大家来想一下,这个好做不好做,好做不好做啊,首先我们就分析嘛,那我在插入这条数据的时候,那么它应该就是有一些什么基本的一些什么数据,这个ID有没有啊,这个数据的组件值有没有啊,你插入之前有没有主见值啊,没有吧,因为什么呀,你是要交给数据库去维护的嘛,啊,那么等你知道数据插入到数据库里面以后呢,你想去把这个数据查出来,那么基本上我们都要通过这个组件来去查吧。
01:14
对吧,但是呢,我又不知道你的主见是什么,我怎么去查这条数据啊。怎么查呀,不好查吧,对吧,好多同学想说,那你可以通过别的字段去查呀,但是别的字段你就敢确保它是唯一的吗?万一你通过这个字段你查到了多少数据呢?对不对啊,所以说这个其实不咋好做的啊,如果说你非要做的话呢,也能做,怎么做呢?反正你的这个数据库的组件是自增的,那你可以把这个数据给它倒叙一下,然后取第一条嘛,是不是啊,是不是倒叙一下取第一条啊,对吧?但是这种方式的话呢,啊,其实有一些啊问题啊,比如说在这个并发的情况下,你这么做就不合适了,万一你插入一条数据,等你再去查之前呢,人家又插入一条数据,那你一到去,你是不是把人家的给他查查回来了,对不对,所以说这么做是不对的啊啊那么我们应该怎么做呢?我们就应该在我插入一条新的数据的时候,你立马给我返回一个当前这条数据的一个主键值。
02:15
然后呢,我再拿上这个主电池去查我的数据是不是就没问题了,能听到这个解决方案的吧,OK,好,那么在整个的这个需求里边,我们需要研究这么几个话题,第一个是我们的组件生成方式,第二个就是如何获取组件值,因为现在我们用的是这个买sol数据库,所以说呢,我们主要是诶以这个支持组件自增的这种数据库来去给大家讲解啊,那就是我们的MYSL数据库啊,其实还有一个数据库就是Oracle也是比较流行的啊,但是呢,它是不支持组件自增的啊,这个数据库的话呢,我们也没有讲过,因此现在我们是不研究它的,我们只来研究第一个,那对于支持组件自增的数据库如何获取到我们的诶组件值。啊,怎么获取呢?大家注意啊,我们只需要诶,通过两个属性就可以获取到,在这个叉五的这个标签中啊,使用一个use加的case等于处,然后呢,再通过key pro来指定一下我给你返回的主电值,你要保存起来,怎么进行保存,或者是保存到哪个属性上,这就可以了。
03:19
明白吧,来吧,那我们就先啊看到这个结果,然后呢,再来给大家去解释它这个原理是怎么去做的,OK,那么回到我们的这个插入操作上面啊,这就是我们的insert,是不是这个操作呀,OK,在这个insert里面的话呢,我们通过两个属性啊,一个是呃,Use generate case等于true,那么这个它的主要作用是什么呢?给大家解释啊,就是来告诉什么呀,告诉这个my be啊,我使用的是什么组件自动的方式啊,使用组件自增的方式。明白了吗?另外一个的话,我们需要用到一个什么key property啊key property,这个key property是干什么事的呢?啊,就是将来买呢,会把这个主键给你返回回来,那么返回回来,返回回来以后呢,你就需要把它保存起来,好那么现在我们来想,我让谁去保存我这个主键值啊。
04:17
就拿这个地方来讲啊,就这个地方,你再想一下,谁能去保存我这个主键值呢。谁呀?那你要保存数据,那你肯定得去找这个变量吧,对吧,或者说找对象吧,是不是,那你看在我这个插入的时候呢,我确实是给他传过来一个对象的吧,是不是有个对象的,OK,那么这个对象里面我在插入之前呢,它的那个ID肯定是没有值的,那我就可以什么当你返回这个主键以后呢,我就把这个主键值呢,再保存到我这个对象的那个ID属性上,是不是就可以了。能明白吗?所以说这个是干嘛的呢?就是诶指定啊,指定谁呢?指定这个保存,哎,这个my be返回的啊,返回了这个什么组件值啊,指定谁啊指定啊用对象的哪个属性啊,来去保存我们MY贝法官的主键值,那这个位置我就写个ID,但注意了哈,这个ID我写的是谁呢?我写的是我这个当前employee这个对象啊,当前employee对象里面的这个ID属性,明白了吗?写的是它,好这样的话呢,我们在插入之前呢,我这个对象是没有ID的,但是插入之后以后它就有ID了,那接下来我们做一个测试,好回到我们的这个位置,大家来看,那我把删除呢注视掉,我们来测试我们的添加操作,就是它我在插入之前看一下这个对象有没有ID啊,没有,但是呢,我在插入以后呢,我就可以来获取ID了啊Co我们输出一下。
05:57
Employ get ID好,这就是我们的,诶返回的组件值啊,OK,加上它来吧,测试一下,那么我们新插入一条数据吧,我们就啊不加他了是吧?我们再来写一个啊,再写个谁呀啊,写一个你们喜欢的常老师是吧?老常老师是谁是吧?我也不知道啊,反正经常听说是不是啊啊这个你们可以问问你们接下来的那个老师是吧?他们叫什么啊?OK,接下来是谁啊,我也不知道啊,能坑就坑对不对?OK,来把这个写好,那么切好以后的话,我们就来看看啊这个效果,能不能把这个主键值给它拿回来啊,来运行一下。
06:50
好,来看一下1024,哎,这个数字还挺吉利是吧?啊,看来这个常老师跟程序员还是这个冥冥之中是吧?啊,注定有点这个瓜葛的是不是啊,1024嘛,不是程序员嘛,对吧?好吧,那我们就看看啊,这个对到底对不对啊,先刷新一下诶我们就能看到这个数据的ID呢,确实是1024,看到了吧?诶,确实是1024啊那么呃,它这个位置呢,给我们返回的主键值呢,就是一个1024,说明我们现在做了这个有没有问题啊,没问题,那你看一下我刚刚插入以后,我拿到这个主键值,我是不是立马就会以通过这个主键去查我的数据了,对吧?诶,那我们这个效果呢,就能实现了,好,接下来给大家解释它到底是怎么来做的呢?
07:42
底层上肯定就是JDBC了嘛,对吧,你就赶紧去想我JDBC里面有没有做过类似的操作啊。啊,同学们有没有做过?没有吧,没做过啊,看来没做过是吧?有做过的话,应该有同学能记住是吧,不能都忘了吧,对吧?啊,那没做过的话没关系啊,你就来听我给大家说一下,大家要什么知道一下啊,怎么做的呢?其实我们的JDBC呢,它本身就是支持诶,我们把这个组件值给你返回回来的,但是呢,我们需要这么来做哈,注意我就在这方写一点伪代码哈,就是我们首先呢,得有一个connection,就等于空白,能理解吧,假设这个对象是有的啊,然后有了它以后呢,我们是不是可以去预编译我们的搜狗语句了吧?好的,Statement没找错。
08:41
好,Prepared statement导的是java.so的这个包啊,那么我们就可以怎么做了呢?诶,就可以啊,connection.prepare statement,那么基本上你们是都传一个sole进去啊,对吧,把sole传进去了啊,但是其实这个位置的话呢,它有一个重载的方法,这里面呢,我们还可以再去传上一个值,你看了哈,有一个什么东西啊,有一个T什么auto to case看到没有,对吧?我们可以用这个方法,然后呢,这个地方的话,你就传上一个sol语句,然后后面这个给谁呢?他需要我们给他设置一个值啊,这个值的话呢,其实就是个一了,但是你写一的话,这个谁都看不懂,你要这么写在这个prepared statement里面。
09:23
好,有一个常量叫做什么return加K,是不是给你返回这个自动生成的组件值啊,其实这个值的话,你看一下它本身就是一个一吗?0X1不就是一吗?看得懂吗?这个E看到了吧,OK,就是个E啊好,那么这样的话呢,你再去做这个操作,比如说哎,我做的是一个插入操作,那我要调的是点I update好,我把这个方法的执行完,执行完以后呢,你再去执行点叫做什么get generated OK,这就给你返回回来了。明了,就是你新入一条数据,那么我就能获取到我入这条数据的一个值,就是通过这种方法方法来去做的这个。
10:11
真没讲过呀,那宋老师都给你们讲什么了,讲超老师了是吧?啊啊什么啊,这个没关系哈,这个其实我们用的呢啊,就是在JDBC里面来讲的话,用的不是很多啊,但是呢,在买倍里面,你必须得知道怎么把它返还回来,能听懂吧,诶怎么把它返还回来,然后呢?呃,因为我们在实际的一个JAVA1的业务中,我们经常会这么去做,就是我新插入一条数据,我要立马得到这条数据。能听懂这个意思吧,哎,我要立马得到这条数据啊,听明白这个意思了吧,OK,好,所以说呢,诶这个地方的话,大家要知道怎么去做的了啊,那么这是一个伪代码,我就把它注释掉了,感兴趣的同学呢,你下去以后呢,可以自己啊写一段JDBC的代码来去试一试它啊,我就不再给你试了,这个肯定是没问题的啊,你下去以后你自己试一下就是啊,JDBC操作是吧。
11:03
好,获取我们的啊,这个这个新插入数据的组件值,OK,那么这个话题呢,就来给大家去讲这么多,那么大家要记住的就是如何在买贝蒂里面获取,就是通过诶这两个属性设置,听明白了吧,哎,通过他们两个来去做的啊。
我来说两句