00:00
好。那接下来呢,咱们这个地方。Circle对吧,是带问号的,比如说咱们未来在这边定义的时候,咱们就有办法了啊,比如说咱们怎么写呢,很简单,就是MY。可号九点盖了这个方式对吧。啊,Get方式啊好,那么接下来的这块呢,我们写一个思维语句,那就是insert。In,库对吧,我们注意啊,这个URL呢,已经到库了,所以你直接写表就行了,你不用写库了,如果没有没有到库对吧,假如这玩意没给,假如说我一直到这儿,那你就写库点表对吧,那已经到库了,就无所谓了,我们就直接写表明,表明比较长,我就拿一下啊,把这个拿过来。往那放。对吧,好,那接下来呢。因四零这张表对吧,正常来说呢,你要加一个括号,然后呢啊ABCC对吧?好,那如果说不写,那就见表顺序吧,对吧,然后我们再按见表顺序Y64括号啊,然后呢,几个列六个列吧,对吧,六个列好那就是六个问号对吧。
01:12
六个八号。好,那最后呢,我们调用的时候肯定就这样调用对吧,好那。回到我们这个参数,这个参数干什么事呢?我们三个语句里边有问号,然后呢,这是一个流对吧,这是硫未来这个柳,那就调用我们这个工具类方法,就是这流里边呢,有一条一条的数据。我们就要把这一条一条的数据呢,给这个问号赋值,然后呢自己去执行就写出去了。对吧,他这样的一个操作啊好,那给问号这个占位符赋值谁做的呢?这个方法。啊,这是他做的。来看这边呢,还是搜到这个方法里边,它就是prepare statement,这个东西大家还熟吧。
02:04
我们是不是拿着连接connection调用prepare statement?预编译circle,那我们就会看到什么。这个。预边带这位符的对吧?好,第二个参数是一个T,那这个T是谁呢?因为我们写的泛型对吧,这个就是我们输入数据类型,这就是一条一条的输入数据。那我们接下来要做什么事呢?我们要把这里面的值给这个问号赋值。对吧,比如说。你看啊,我给大家打开。打开下官网,我们来看一下哈。因为官网上呢,我记得他用的一个这个招聘用的是BOOK1本书,对吧,然后呢,里边有ID作者年份,好像有这些东西吧,对吧。还有书名吧,应该是有这个啊,有一个IDT对吧,然后呢,有这个奥作者还有年份发行的年份对吧。
03:10
来,我们还是看这个13啊。嗯,连接器。They swim。找到JDBC连接器。你看着它这个地方呢,就是这样写的对吧,啊点33THREE3THREE31234,诶因为它有四个问号对吧,So,四个问号给了一个负值。啊,那也就是说咱们现在要写呢,把这个里边的。值取出来给这里边问号进行赋值。对吧。啊,要做这个事儿那。这个。怎么做呢?对吧,我怎么把这个值取出来呢。
04:00
T。啊,你要是像他是一个什么book,那还好一个具体类型对吧,你看book.id.title.author点。对吧,直接调用这个属性,但是现在咱呢,是一个泛型对象。对于这个泛型对象而言,他有什么概率的方法吗?点盖了,哎,只能get class。只能做这个get class做这个事那好像不太行啊。他没有获取的一个属性的方法,那怎么办啊。开动脑筋啊。把你曾经学过的东西都翻一翻。这个地方我们怎么能拿到T对象里边的属性。
05:09
啊。我们怎么样才能够拿到T对象里边的属性?想一想啊,我看有没有同学知道。有没有同学来说一说啊,我应该。这个T对吧,它是一个泛型对象,我应该怎么来取这里边的。值呢?属性值呢。因为我要把属性值取出来。给这里边的问号进行赋值处理。
06:01
哎,杰总说了,反射。啊,其他同学呢,有没有什么想法。其他同学呢,有没有什么想法呀?没有是吗?啊,那其实就是利用什么呢?利用这个。变成具体的类型,咋变成具体类型啊,你要在这里面能变成具体类型,那不完了吗。你变成谁,我未来有11种,你到底变成谁,那肯定不是变成具体的类型啊,对吧。而且你这玩意咋变成具体的几个一个替对象对吧?啊,其实用的就是什么呢?用的就是反射啊,要用反射来做这个事情啊好,那这边呢,我们写一下叫使用反射的方式获取。
07:08
气对象中的。数据属性数据啊,那呃,反射呢,首先要获取大的class对象,对吧,大家V。啊,得到一个T。CLZ对吧,我们叫这个名字啊,一般我们用CZ啊,啊不要用CRSS这个啊。一般我们C吧,啊,因为CS它是一个关键词啊,所以呢,用。Z啊,好,那这个。大的对象有了。对吧,然后接下来通过它能够获取到属性名啊T。点。诶,那这个地方呢,可以获得到这个属性名啊,当然它还有一种啊,它还有一种点直接get file,诶这也是获取属性名这两个啊,那它俩有区别,你看它啊,它呢,其实能获取到的是什么呢。
08:07
更重要的侧重于你看啊,它是获取这个。Public affairs。啊,Public or对吧,The accessible public啊所有的这种public啊好那。对于这个而言呢,它俩比较大的一个区别在于它呢不光能获取到,你看啊这个呢,All the fields。对吧,呃,包含this includes public protect default,然后and private,它都可以对吧,所以呢,我们肯定用上面那个更保险一点啊,更保险一点,他呢连私有的都能够获取到。对吧,啊,哪怕你私有化构造方法了,也照样能获取到啊,好,那我们有了这个字段。嗯,那获取值呢。
09:00
对吧,获取值呢,我们遍利它对吧,拿着一个一个姿态去获取你,你拿这个数组我们肯定不行啊,对吧,所以呢,我们便利。便利属性对吧,那就是这边是一个数组,那我们就只能用负I循环了,对吧。A呢是它的一个长度。啊,I呢,是它的一个长度对吧,好,那么在里边呢,我们就获取值这个地方就涉及到了,我们先把这个属性拿到对吧。要受阻啊,拍。这个呢,我们就得到了一个一个的。对吧,我们得到费的,这是获取这个属性啊。获取单个属性。好,呃,那么这边呢,注意一下,就是以前这个地方就突出一个反射,它到底为什么叫反射。来注意看啊,以前呢,正常的而言,我们正常的顺序啊。
10:00
这边呢,就教大家一个方法,好记啊好记对吧,怎么记呢,怎么样,就是关于反射的一个说明,我给你说一个方法啊,让你好记,以前呢,我们正常的顺序是什么。我如果说我要获取一个。正常调用。假如说我现在呢,有一个招聘。对象对吧,有个T对象啊呃,我要正常的去获取一个属性值,我应该怎么写。我如果需要正常的就获取一个属性值,应该怎么写对吧,那比如说这边呢,是呃,返回值,我我我写一个object。对吧,我我也不知道它什么类型嘛,所以我用object,比如说啊,然后呢,我得到一个value,我应该怎么写。是不是应该拿这个对象调用点盖什么呀。对吧,那假如说它的属性名叫AA。
11:03
它的属性名叫AAA可以吧,好,那属性名呢,比如说这边呢,有一个AA属性啊。A属性对吧,那么钙的方法应该这样写啊。对吧,是不是。这个没问题吧,我正常的去获取这个属性,是不是拿着对象调属性啊。对吧,你要获取哪个属性,你就get哪个属性,就是对象叫属性啊,对象调属性好,那现在呢叫反射调用。啊,反射调用。那反射调用怎么玩呢?那就反的呗,对吧,我同样的还是获取这个值啊,我都是为了获取这个值,以前呢,你正常的顺序,你有对象你有属性,拿着对象调属性就好了,现在反射你猜怎么玩。能明白,能get到这个反射这个意思了吗?叫aaa.get。
12:09
这就所谓的反射,你把它放在一块来看,你就能体会到一点,能不能体会到一点反射所说明的意思啊。反的。对吧,啊这样呢,更好记一点,就是对于这个知识点。对吧,那以前呢,你是拿着对象调属性。啊,现在呢,是拿着属性调对象。啊,拿着属性调对象。对吧,反你看他俩我我这样对比着写,我都是获取这个值,但是呢。看这是不是反的,完全相反吧,对吧。啊,这就不一样了啊,这是所谓反射对吧?啊,当然呢,你你首先呢,你要通过反射的方式把这个东西给他获取过来,这是反射的调用啊,通过这个方法调用,这是最后一步了调用啊,当然前面这个也很关键啊,你要通过反射方式把里边东西能拿到。
13:06
对吧,你要把里边东西能够拿得到啊,这个通过反射的方式呢,把它属性获取到,这个很重要。啊,这个很重要对吧?好,那么接下来我们看一看啊,这是属性,比如说我们在做一个方法的说明啊,比如说我同样的有一个那个呃,Bbb的一个方法,假如说啊,我有一个方法叫bbb。啊,甚至呢,它里边有参数。对吧,啊,假如说in的类型A啊,然后呢,String类型。啊C啊,或者说四角形B吧,这边呢,有个CC方法啊。或者一个参数也可以啊,一个参数也可以,那正常的调用是什么。对吧,正常调用我调用方法对吧,还一样的拿着什么og.cccc。括号含A。
14:01
传B吧,哎这样去对吧,好,那大家觉得反射调用怎么调。我同样的还是获取这个值对吧?啊,因为你方法有一个返回值啊,有可能你是贸易的对吧,这个无所谓,反正呢,嗯,我我我总写一个,我得写一个东西吧,啊调这个方法,那怎么调呢?它是一样的啊反射CCC.invoke。括号传什么呢?传OBJ,关键还有一个问题,那接下来这个问题比较严重啊,什么呢,你看。你呢,获取属性。你get属性这个方法一定没有参数对吧,所以呢,我直接get这个OBD就行了,但是现在你调方法完了,你这个方法呢会怎么样。会有参数啊。对吧,而且有的有参数,有的没有参数,有的一个参,有的两个参数,那这个怎么办啊,你光传它肯定掉不了啊,所以你注意啊,它的方法后面呢,它是一个可变性参啊,你把AB呢转到这。
15:01
啊,我把这个东西呢,也给他看一下,但是呢,我们不多聊啊,这边呢,我们到时候注释掉,那呃在这边。往上放啊,这是获取。B。便利属性可以吧,好,那这边呢,我给大家写一个方法啊,比如说这边呢。点。Get methods对吧?哎,它所有的方法呢,都能够拿得到,好,接下来呢,你也用循环。Methods点对吧,Methods点。啊,不是点了应该是I对吧?好这样的话呢,我们就得到了一个method这个方法,接下来你看啊,Method的点invo来看里边传什么。首先这个是必传的。对吧,Object对象,接下第二个呢是object点点点。啊,不是四阿克斯对吧,是参数,因为你未来他只要通过反射射调用方法都是这样调用。
16:07
对吧,它都是这样调用,那你未来这个方法,有的有一个参数,有的两个参数,有的五个参数,有的没有参数怎么定义呢?所以他在后面把这个参数做成那个什么。可变形参啊,做成了一个可变形参。对吧,好,那这边呢,你把T传进来对吧,接下来呢,这边参数你随便写,你也可以不写,假如说呢,这个方法第一个方法它就没有什么。他就没有。这个。参数。没有参数列表,那你就这样写对吧,这个呢,我们就给它注入量啊,大家了解一下这个事儿,诶它这是调用方法,那我们呢,获取属性对吧?啊,获取单个属性的值啊,那刚才我们说的,那就拿field.get。T对吧?T是我们的对象,加V得到一个value,这是我们的值。啊,这是我们的值,好这边呢,它有一个异常,这异常什么呢?他说什么叫非法访问异常,因为我们通过这样的方式获得的这个字段有可能是私有的,对吧,我们刚才看到了它呢,包含所有的私有的也能拿不到,那如果私有的你这个就防不了了,对吧?所以呢,在这边啊,呃,我们这点set access给它改为true。
17:23
对吧,我们把这个地方改为处,那这个异常呢,就不会发生了啊,啊,我们就直接。这样就好了。对吧,处理一下在这。啊,处理一下对吧,啊,那这样的话,我们就获取单个属性值就有了啊获取属性值。好,那最后一步我们要把这个值,我拿值不是目的,目的是什么?目的是把这个值要设置到这个。占位符里边对吧,好,那最后一步啊,给占位符赋值。
18:01
给价位和复制,那就statement.set那我也不知道什么类型,那我就统一都用object。对吧,好,那这边呢,I注意加一啊,I加1I是从零开始的。而在所有的GDBC里边。对吧。都是从一开始的,所以你这注意要加加一啊,然后呢,把这个值放进去Y。好,那到这个为止呢,咱们就。搞定了。啊,咱们就搞定了。能懂吗?对吧,我们就把这个值通过反射的方式从这啊,通过反射的方式呢,把这个属性值拿到,拿到之后呢,给它设置进去,这个就解决了。对吧,好,但是这里边儿呢,其实有一个要求比有什么要求啊,因为在这里边我们已经在这工具类里边写死了,按照这个属性的。顺序进行便利吧。对吧,所以呢,你最好确保什么呢?你要确保咱们建表语句的这个顺序。
19:05
就是字段顺序最好呢,与我们的招聘的顺序怎么样。跟这个字段的顺序要一样,最好呢是要一样。对吧,最好要一样,因为这样的话呢,你就不需要写这玩意了,你就不需要写一个括号对吧,然后呢,ABCC写一个字段名不需要了,对吧?好,那如果说不一样怎么办。回家自己手动写一下。对吧,我要自己自己手动写一下啊,那是根据我们招聘的顺序来啊,就是你这个建表的顺序得依着我招聘的顺序,因为在工具类里边我已经。按照招聘的顺序进行编译的。能明白吗?能明白吗?啊,我举个例子,大家给我说答案就行了啊,比如说现在呢,克里house的一个表啊,表字段它是这样子的,我见表的时候呢,是A。
20:04
BC好,那我对应的有一个招聘啊,有个招聘有个并对象。并对象的顺序呢?比如说是A。C。B。是这个顺序,那么你告诉我,我insert。Insult into。T1啊T表对吧,好,那这边呢,你就不能这样写了吧,Y64。没60括号,诶,你给三个问号。你要给三个号完了,因为在我们的工具类里边,我们是按它进行编利的,然后给这个张碍值,你这样写就说明你是什么生取ABC,你就把这A给A了,没问题对吧,你把这C给B了,B给C了,他俩反了。我们得怎么写,这得给定属性吧,你告诉我这个属性应该怎么写,写谁?你把这个告诉我,我就能知道大家有没有明白这个意思。
21:02
或者说这样啊。啊,这样。不光。顺序不一样啊,我告诉你这个A呢是对应的对吧,这个C对应的这个B1B2,它俩是对应关系,你告诉我这写什么。啊,你把这个问题能想明白,那就那就搞定了这个问题。啊,你要能理解了,我再说什么东西啊。啊,班长说写ACD2。啊,其他同学呢。啊,运走ACB2好啊ACB2ACB2全都ACB2呀。啊,又是ACB2。没一个对的。没一个对的。
22:04
再想想,再想想写什么?AC。啊。AC be。对了,云总说对了,要写什么?要写AC be啊。对了,AC be,你注意啊,这是什么?这是so,你给我写边,你疯了吗?搜个里边这个表里面哪来的第二字段呢?你你还能不写表的字段呢。啊。都说ACB2。啊,厉害了你,你告诉我这是搜语句,你还能写出来一个标啊,标是什么?B2招聘的字段,那肯定是ACB1呀。对吧,按照招聘的顺序写的内容肯定还得是表的字段名啊。对吧?你这是骚你骚,你还能不写字段名啊?你疯了吗?
23:06
是不是能明白了吗,现在。啊,说ACB2的。对吧,这搜狗语句里边你不写。字段名你写什么?现在清楚了吗?对吧,啊,所以呢,咱们这个工具类呢,是通用的,只不过说未来调用的时候,你稍微注意一下,那最好的方式就是什么,你别扯这些没有用的了,对吧,你就这样写怎么呢来。我呢,你的建表语句是ABC,然后呢,你的招聘也是ABC。然后这我都可以不写。我都可以不写对吧,那最好的方式是不是这种啊,有没有毛病。最好咱们是不是这样写啊。对吧,最好的方式咱们是这样写。没有问题吧,啊这意思。
24:03
啊,那没有问题,扣个一好吗?就是未来呢,你最好定义成这个样子,这是最好的。对吧,你别搞那些花里胡哨的,搞这搞东搞西。对吧,没有什么意义啊,那咱们就这样写肯定不会出错,对吧,那万一。真的是这样,不是说我们这个工具类不能用了。也能用。啊,它照样也能用对吧,只不过说呢,你自己稍微注意一下,你这边我们说了啊,要按照这边我们解释对吧,加个解释在这边写一下啊按照。Java。病的自然顺序。七。表的。字段名称啊,一定要注意对吧,毕竟你是circle,你肯定要写表的字段名称啊,你不能写这个招聘的字段名称。
25:07
那不彻底疯狂了吗?没毛病吧,还是这意思好,那么到这个为止呢,咱们感觉就怎么样搞定呗,对吧,就搞定了啊那在外面呢,调用我们也都写好了六个问号没有问题,因为咱们这儿呢可以不写,因为我们的刚才我们对了,我们招并啊来给大家看一下Java并跟我们的so。C f3定,这对吧,这是尖表语句,然后呢,我们看Java b啊嗯,Java并在这个位置,诶不是。我看招聘呢,在这keyword病对吧,来看第一个std,第二个edt对吧,第三个source,第四个keyword,诶keyword count ts对吧,只要顺序一样就行了,对吧,跟字段名称没关系,你字段名称不一样,我也照样能写对吧?就刚才我们举的例子,你呢,一个B1,一个B2,字段名称的不一样没关系。没关系,对吧。字段名称可以不一样,因为我跟字段名称其实关系不大,我就是看顺序,只看顺序对吧?好,那这块呢,咱们就。
26:07
搞定啊,咱们就搞定了。
我来说两句