00:00
嗯,我们现在呢,写了这么样一个update的方法,这个update的方法可以执行任何添加,删除、修改,只要你传入一个circle,传入这个circle占位符对应的这个可变参数就可以。那下一个问题的话呢,我们感觉什么呀?哎,我有这个修改的了,那查询的呢。我再说一遍哈,我有修改来了,那查询的呢,查询呢,我们今天上午也写了一点,不过我们发现今天上午这个查询方法呀,过来看查询的方法。哎,这是一个,你看查询的话什么呢?这个就得返回一个student,那我们昨天还写过返回一个customer,我是不是还得再写一个方法呀,对,因为我student跟customer。
01:01
字段完全不一样,我们有办法把这两个方法写成一个统一的方法,我再说一遍啊,我有办法把这两个方法写成一个统一的方法吗?为了实现这件事呢,我们首先啊,写一个获取student的方法,再写一个获取卡的方法,我们对比一下有哪些是一样的,然后我们能怎么样给它抽成一个方法,然后这个方法能干什么呢?它能够获取。任何的数据库记录成为一个对象,OK,那首先我们回到这顶上来哈,请看这个方法啊,Public student。At student,哎,我获取student的话,我可能需要传个什么呢?我传个circle,我再传一个单位的可变参数,好,我一个好,这个写法我复制过来大部分是一样的。
02:11
这个呗,看着奢侈。Catch这个方法在这呢,啊,这我复制过来。CC。好像看见这个方法,Ctrl shift f说话。Student改为prepared statement。等于那这个改一下。等于,然后填充位符。或循环I等于零,I小于二,点I加,加prepare statement that object I加一,一会写什么呀?
03:15
写Xi,对。简称I,然后执行。查询payment点执行查询啊执行完查询之后的话呢,如果要是有的话,一块宽。Break car statement哎,如果要是有的话呢,那我就把这个结果一个一个获取出来,然后完了创下一个词跟对象这样写哈,它to等于new student,然后一个一个赋值。点在第一个叫啥呀。反正我把这个记得一个一个附第一个ID。
04:05
这样写。这是第一个。然后是student填that了。下一个。Sq.site。ID卡这第三个。一共是七个啊啊暂时的话呢,再一个一个写了,然后再写完之后的话,这方法是不是就写完了呀,获取student就这么获取,那比方说我这来写一个获取customer,大家想获取customer的话,这个方法哪一块会不一样,第一步。这块应该是个customer吧,是吧,这个一样吧。
05:00
这个一样吧,这里边儿类似吧。所以说想他能够。真的抽成一个方法吗?有难度,好,我们再写一个,大家看一下啊。Customer。好看,里面有什么呢?有ID。有name,有没有date类型的?Four。好,下一代方法。呃,写个带参的构造器,用于初始化所有的属性,一定要有一个不带参的,再有一个透析论方法用于测试。
06:09
这个呢,是我们一般情况下是我们一个类的这个标配。写完,然后我们把这个close一下。这个拿过来,诶,我再写一个,这个方法我们写一下啊,大家看一下它们会有多么的类似CTRLC来。这位,这叫返回卡。这怎么写呢?这叫customer。看我们改的地方啊。后边都一样。一样一样,里边这个是不是就类似啊new我助调一下,刚才你没写全哈,我们来写个它,它怎么等于六。
07:05
Customer,然后customer.site ID result点一吧,在点S。String,不是that name without that that string,不吧,然后customer email set.get string。三。哈莫点sites。点get。EIGHT4,不写完了呀,给我返回的是什么?返回的是一个。是一个插图写完了,好,刚才我们看到的话呢。
08:04
有很多地方雷同,不雷同的地方相似,是这样吧,这个时候我们就要想,哎,他俩应该能写成一个。这种思维方式很重要哈,我们以前讲过说嗯,人人偷懒,偷懒,这偷懒的这个本能是在推动这个社会发展。就你觉得这样这样做麻烦,那好了,他一定会有一个方案能够解决目前这种类似的代码,那我们看怎么解决呢?我想写一个方法这么写,它反馈类型是什么类型,不知道泛型T类型at好了,那你中途得告诉我返还的类型是什么类型啊,先写个词论的circle,要OBJECT123,这也是要的。
09:01
X,好了,我先写个份,那我们看哪些地方是一样的呢,T。Entity等于now这个返回。是这中间这个一样。CTRLCCTRLV,于是我们看啊,这是一样的一样的一样的一样的,这个里边不一样吧。里边咋不一样呢,里边首先我需要这是创建对象吧,创建对象这是new的吧,我现在我甚至我都不知道这个对象是啥样的吧,所以说还需要传一个参数,传一它它对应的class对象。然后呢?过来创建对象,Entity等于class.new反射创建对象,利用反射创建对象好了,下一个比较麻烦,下一个。
10:15
是不是需要一个一个的进行为这个属性赋值啊,关系出来了是吧,我仅靠这个class,我不知道它有哪些属性,另外我在查询的时候,有可能只查询了个别属性。什么意思呢?比方说比方说我们这个里边的这个啊,Exam student,哎,我只查了里边的两个属性,它也可以返回一个exam student那个对象,只不过其他属性是空,只有这两个是有值的,所以说我们现在我们在一个一个赋值的时候,我不能够。靠他得靠谁呀,得靠。思考。好了,下边这个弄不了了,怎么弄呢?以下需要怎么样通过解析circle口,通过解析circleql语句。
11:11
来判断。到底选择了哪些病。然后呢,以及需要为。对象。的哪些属性赋值?OK,这块我们需要费点心思,但整体这个框架已经搭起来了,看一下说呀,我这个方法可以,呃,根据传入的。类型传输的circle以及可变参数返回任何一个对象。然后大部分代码跟今天是一样的,只不过这块有点小麻烦,先写一个测试,爽一下public voice list get,看一看长啥样呢?哎,我们说呀,我返回的是个customer,等于get。
12:23
有连class circle。来写个string circle等于保障啊,Select ID name email first from。ID等于跑,ID等于五。第customer,我希望customer打出来,好,我们看看五啊,这个王这个啊,Customers没问题,那我也可以返回exam student也OKID是是五的,比方再写一个circle,等于啊,Select ID。
13:23
下一个到type。Car ID card ID card。Then。有点他。M。Location。Lo ID等于问号,然后呢,写法跟那个是类似,我得到一个student等于at。
14:09
嗯嗯。嗯。Student啊。student.class circle配二比方说五,诶,我也可以对这个student进行打印,大家说如果要能写出这么一个方法的话,这个方法是不是很牛啊?哦,那方法写一半了,还差点。差什么呢?你看我根据传入的这个circle,我是不知道我选了哪些列呀,但是我选的这个列跟属性之间不一定有什么必然的联系,比方说比方说我现在呢。
15:01
我把我这个列改一下al table,实际上我这个列啊,应该这么写。看没问题,ID啊,就是说目标是有多个列,要是有多个单词组成的话,它应该这么写exam。啊。Student name保存,如果确实是由多个列组成的,那么我这个列名啊,需要使用这个,这个列名单词需要使用下划线连,如果我要是这么写的话,那我这个还得改一下。好了,我需要这样写,这样写完之后的话,我发现什么呀,我的这个列名和这个属性名之间。
16:03
主静你看主径什么,我我在这个这什么里边,这个答案里边的话,我是不是除了第一个单词里边这个首字母大写呀,这没什么关系,那我如何来建立这个关系。我靠,我靠,这个靠不上,我们已经知道了这个class,你什么也出不来,这仅是一个呃,仅是一个class。Class点啊,这个class能考上,我说错了啊,这个T啥也靠不上。连T什么对T什么也考不上,好吧?我通过这个class我能知道通过这个class啊,我铆大进能够知道我有哪些属性吧,我会知道吧,但是我这个属性,我说我哪一个属性会跟这个里边的这些字段相关联,不一定吧,那有可能有可能哎,我这个ID card是对那里边的那个exam card也说不定。
17:04
当然了,就是我们只是说这个意思哈,那怎么办呢?这么办大家看啊,我写的时候啊,我在这个列后边写个别名喽。Hey。加把劲。对,好了,Type是一样的ID card,我写个ID。好啊,Exam,我写个。Design。这个据。Student。Location great没问题,From,我这样来写,我在写这个列宁的。同时啊,我后边加上一个列的别名,这别名是什么呀?这个别名指的应该是我对应的那个属性名,好了,我对的那个属性名要是有的话,那我这个circle里面,我能够获取到这一个一个的属性名吗?
18:10
我再说一遍啊,我这个circleq里边能够获取到这个一个一个属性名吗?我要能获取到之后的话,它有什么特征吗?于是写一个字口给你写个字号,大家先看啊。看,我们先把思路说了,看我们想干啥,哎,过来,底下啥也干不了,先打一下。有是异常,不管他第一个,第一个是,呃,看第二个吧。第二个的话呢,是这么写的。Copy回到这个里边,来来。就是有点多哈这样。Ad比武。
19:01
好一下。它这个有个问题,Flow ID。下划线有啥问题啊?Where啊,这块没写上啊。好了,别跑。啊,大家看这个结果,来看这个结果,Flow ID time ID card exam card student name location grade,我来截一个图。嗯。在这个里边吧。啊,我来截个图,那这个图。老大好。
20:00
好了,哎,我通过什么呢?我通过SQ语句的方式啊,我来写了这么一个东西,好了,这是我得到的,我得到这个之后的话呢,我想把它封装成一个什么呀,封装成一个student对象,我找到我的student在这呢,好了,Student呢,我来截一个大家看。能解一部分啊到这其他我不加了,后来。大家首先看我能不能一个一个对上,你看第一个是ID吧,就是ID吧,ID card exam card student name location grade是不是对得上啊,对得上,哎,这样的话呢,我就形成了数据表跟类的属性之间的一个对应关系,那我下一步我只要能干什么呢?我只需要能够解析到我circle里边那个列的别名。
21:07
看着哈,我只需要能够解析到这个色后语句里边这个列的别名,这个别名是不是就是我对应那个张阿斌的属性名啊?哎,我需要解析到我这个四口宇宙里边这个列的别名,同时再解析到这个列的值,然后的话呢,我利用反射技术把那个值赋给对应的属性是不是就可以了。好,我们把这个流程的话呢,我说一下,我们实际上传入的呢,是一个神秘的搜QL语句,这个搜QL语句长啥样啊,我们也不知道,因为我们现在是在写一个底层的代码,我只知道有一个思考。知道有它,但是呢,我根据这个circle口啊,我会得到就是circle口是一个很很很神秘的一个circle口啊,但是呢,我根据这个circle啊,我会知道什么呢?根据这个circle我会知道,诶,我的这个呃,结果集是这样的,因为你的circleq可以查呀,好了,于是我可以从中知道我有哪些列,具体是列的别名,然后我通过这个列的别名来判断,哦,我这个类里边的这个呃,属性有这一些。
22:20
有这些,然后的话呢,我再把这一个一个的值,我们以一个为例啊,比方说这个。比方说他。哎,我来把这一个一个值付给谁呢?付给我对应的属性就可以,对的属性是谁呀,这个属性叫ID card在在在这。哎,我就想这么布置。
23:04
我不想这么干,这就是我们的一个基本思想,把步骤写一下,步骤是这样的。整整了个竖的。横的。好了,步骤是这样的,先利用circle进行查询,得到结果集啊,第一步啊,然后想是吧,有结果急了。我一定就能知道这个结果集那个列的列名是什么,然后获取结果集的列的列的是别名啊,列的别名,比方说这个ID card。吧,然后看,然后的话呢,我已经利用反射,利用反射啊创建实体类,实体类的对象,比方说创建student对象啊,创建student对象啊,我这个别名我也有啊,别名有很多。
24:22
再写一个,比方说student name等等等好了,他有了这个,这样有了,然后再利用反射,利用反射。这样吧,获取结果吉一个给个位置啊。好,然后的话呢,这边我有的话呢,然后再获取对。获取结果及啊每一列的值,你有别名的话呢,每一列的值,然后呢,结合三结合。
25:04
三得到乙高。迈迈不见执不是剑是谁呢?剑就是列个别名,别名直列的直列,列纲值,这这个时候我能干到吧,我结果一我结,结果一到宝宝楼跑,这个还有问题吗?那这个长啥样呢?长们可能是这样。比方说ID结果是五逗号,然后是type,这个结果是六。逗号,然后ID card,结果是什么是什么行了。哎,就长这样好了,这个我读完之后的话呢,然后反射我这个对象也有,然后我们怎么样在。
26:01
利用反射备。二。的对应的属性赋值。是什么呀?那属性是谁?值是谁呀?属性即为map的键值即为map的值,清楚了吗?哎,我得到了这样的一个map,这是什么ID?于是我就为这个对象的ID赋值为五,啊,我得到了一个type是六,于是我就为这个对象的type赋值为六,这可以吧,前边那个呃,Reflect u我们已经写过了,我们可以。用反射的方式直接为属性复制,这样的话呢,这个事就完了,于是我们看到目前为止的话呢,这里边有哪一个步骤是咱没学过的,第一个说先利用SQ进行查询啊,这个我们可以查,利用反射创建对象,这个可以干啊,这个不行。
27:14
我不知道如何去得这个列的别名,然后我如果要列的别名要是有的话呢,后边得这个值应该问题不大吧,是吧?啊,后边这个反射这个问题也不大吧,问题就在这儿,我如何来获取这个列的别名,这个时候我们可以来用到一个基数点叫啊获取接DBC的原数据,原数据就是干这个事儿。描述数据的数据,我们具体用的是谁呢?具体用的是这个叫result set me data叫result set的原数句。好了,我来学习一下它result set原数句来看public avoid test result set。
28:02
At test来说是什么呢?选C来。What?Matter是什么呢?啊,是描述set的原述句对象,论元数据对象啊,D。中中可以从中。从中可以获取告结果集中有多少列,列明是什么等等等信息,描述它的吗?就是我实际上我这个结果集的话呢,类似一张数据表,于是我能够看见你有哪些列呀,你有哪些行啊,那列名都是什么呀?列的别名都是什么呀?描述它的吗?二。
29:19
如何用号如何用啊啊第一个一,我们首先研究是吧,得到。Result that data对象得呀,那我肯定是利用result呀,Result set是看啊result set它有一个方法叫get。太多了。M开头的有吧,哎,对方吗,干什么复制。
30:05
嗯。调用。调用result my的这个方法好,第二步。那that data result that matter data有哪些可用的呀?有哪些好用的方法?于是我们看,那就看谁要看它了。点它又是一个接口过来,有好多方法,其中呢有几个方法我们来可以研究一下,第一个我们有一个叫polocom,这方法可以获取啊,我在查询的时候查了哪些力。
31:04
这个啊,Circle语句,Circle语句中包含哪些?还有还有有很多方法啊,我们不会一个一个说,我们看哪个好用,这个是什么呢?这个是获取指定列的别名,其中索引从一开始。获取指定的列的别名。其中索引。从一开始好好用的方法有好多,目前这两个就够我们用了,好那我们结合这两个的话测试一下吧,过来,哎,我们说的就这么多哈,首先我可以得到它,然后的话呢,这两个我可以用一下,于是我们来做一个测试,那这个我还得用,还得用一下。
32:12
还用它吧,是不是C,因为我需要得到到Z的,我们看啊CTRLC的X,嗯,X就变二吧,Circle。Circle自个写circle呗,就的circle等于写一个啊,这个circle呢,拿拿这个circle来写吧。CC。诶,很复杂的一个字,口号好了,不值二啊。不值X,实际上是不就只有一个值啊,我自个负了statement什么,后边应该是五好了,我得到结果集,然后。
33:08
到目前为止都是正常的吧,下边我们我们要来主要看关于result set Meta data代码。第一个得到。That data塔对象result that data塔搞对了啊RMD等于等于result在有。赛点。点盖点。小写的这。你刚再点get麦卡第二稿啊,获取打印版,打印每一列的列名而写负循环啊。
34:12
六不知道吗?因它I等于零,I小于RSMSMd.column count加加后来column label比类的别名哈等于RSMB.column label。I加你是不是从一开始啊,OK this column label,那就可以这快。跑一下看看。异常。
35:00
撒一场,他说啊,No,不知道这个IDID没改过来呢哈,Flow这块不用写,单生d type ID card exam card student name great,这个是不是刚好跟。我的这个呃类的属性名相对应过来,哎,我不就是希望这个跟这个对吗?好了,这个要是有的话,然然后的话呢,我们再来看我们最开始这个步骤,步骤这个搞定了,这个搞定了好了,这个搞定之后的话呢,我们看下一个,下一个是什么,下一个说呀,哎,我需要给它,呃变成一个麦,那我现在我是不是在。获取结果及每个值的同时,我还得给它弄到一个map里边去再看再看啊,这个已经搞定了,好了下一个,那怎么怎么把这个弄到一个map里边呢?写个map吧,Map电视string形只是object,好,Value等于new。
36:18
卖。挺好挺好啊,这个写好之后的话呢,然后想这个结果集的话,我是不是一行一行的呀,结果集我还是得变例吧,结果集本身还得用well去变b RS result set点。Next,如果有的话,我就把这一行,把这一列列的值给它用出来,这是什么?这是列的值,列的名啊,列名,列的别名,然后的话呢,我在这个里边,我可以把那个列的值给求出来,Object column y等于2x.get。
37:07
哦,that.get我不知道是什么类型,那我就get object吧。列名可以写label,可以写别名,然后给它放在我的value里边,Whose变label,直容value好了,通完之后打一下。去找他。2S不是Y,再看。背叛一边。看说ID card location杀啥的呀,好了,这个要是有的话,下边下边我的下一步是什么了,下一步我是不是利用反射我可以赋值了呀,好,我利用反射赋值,于是我这个方法呀,就可以升级了,什么升级啊,比方说哎,我这个已经搞定了啊,然后我有一个对象,比方这个对象呢。
38:11
Student object。Class class。Class等于。Student class好了,下面我对象object。OB等于class.u点好了好吧,现在的话呢,我要为这个对象的属性一个一个赋值,我怎么一个一个赋值呢。对象有哪些属性,是不是看它呀,我要看这个对象有哪些属性。好,或者说看这个map也可以,这个map我已经搞定了,于是我对map来进行遍历或循环。还记得map怎么遍历吗?map.ent object。
39:10
然后是。然后是value。ENT set,其中field name叫啥来着?Field name应该叫en.at key object。Value等于NG.get value先打一下啊。Build。加加。对的,Y先打一下,这个先停掉,先看看效果。
40:04
是长这样吧,我是不是为这个属性赋这个值就可以啊,那我们老早以前是不是讲过一个反射的Le u,我还记得吗?我是不是可以直接为属性赋值啊啊,把那个类找着,我直接赋值就可以了,那个类在这里。PPT SE reflection c、阿布莱。放在这儿直接粘进来,这个这对不到哦。哦,这个你等一下啊,这保存没错了,好吧,下面我来赋值,怎么赋呢。这我搞定了是吧,叫。U set field value。
41:00
Object name value好了,我写完之后的话,我干啥呀,我要打一下我的object,这个我先。打了看看效果。是我们的那个,对到个这个就以上呢,就是spring jt bc time以及DBU的源代码,当然了还有一些需要改进的地方,我们再说,但整个这个步骤我们已经搞定了,好,我们过来,我们重新的把这个步骤再给他展示一下,看看到底是怎么,到底是怎么搞的,一稿一稿,我会有这么一个莫名的circle,这个circle长啥样我也不知道,反正他会传一个circle过来,Circle我们现在的话呢,我们知道我这个circle长的样子呢,可能是这样,可能是这样啊,比方说呃,这这太复杂了。
42:09
复杂也复制一下吧,比方说我有这样的一个色。好了,那我有这样的一个circle的话呢,我们能干什么呢?我有这样的一个circle的话,我一定可以得到结果集,求这个我能做的事就是我得到结果集,看啊查询,查询得到结果结个及得到对象。Set这项,这个时候我们肯定可以干好,我这个搜狗我不知道啊,那我可以得到一个结果集好了,我这个结果集要是得到的话,结果集开始的时候啊,我们知道可能结果集就长这样,等一下。
43:11
哎,结果集是个结合吗?这个结果集好了,结果要是到这块的话呢,我们觉得有点懵是吧?这个结果集有啥用啊?那我结果级都拿到了,我还担心不知道他有哪些列,以及列的别名是什么吗?不担心吧,那下边就是我用结果集还可以继续得到一个叫遇到SME,塔塔,由它可以得到一个叫遇到S。Outside my啊,对象他干什么呢?这个我能获取到,可以获取,可以知道这个色Q语句,色扣语句中查询了哪些。
44:06
烈烈的别名以及列的。别名高是什么啊,那我有这两个放在一起,当然了,这往下一点啊,这个的话呢,就类似于得到这么一个东西。画一个插入一个表格。查询了哪些列,列的名字都是什么,就就长这样。哎,得到的类似于这么一个东西。第一行能不能不真丑,行好了,就它好了,那如果这两个,这两个联合起来,我会得到什么呀?这两个联合起来,我会得到正八经的一个结果,你看这两个联合起来,这个和它。
45:11
嗯。一起,我会得到一个什么呢?我会得到实际这个数据表长什么样,具体就得到什么了,具体就得到它了。查询啊,具体得的应该是他,但我这个画完之后的话呢,可能放的地方放不太下啊过来。具体做这个。得到这个怎么样,已经很强大了哈,啊,具体可以可以得到他这样吧。那汇总一下。行,就这么地吧,啊好哎,我可以得到这么一个东西,好你要得到这个这么东西之后的话呢,下边干什么呢,下边我还有对象呢,我对象我是个什么对象是个class。
46:07
还有一个哥们在这等着呢,是吧,虎视眈眈的在看着什么呀,Class。对象。还有他呢,那我这个class对象啊。往这放。非常好,哎,我还有class对象,那我这个class对象啊,我有个要求,就是在我进行查询的时候呢,那个列的别名要跟class对象,要跟对应那个class对象的属性名一致,这块有个要求啊,要求。幺九什么呢?列的别名列的。别名要和别别别要。
47:07
这个class。对应的类的属性名相同,这件事不难做到。好了,然后的话呢,这个我看看你都搞定了的话,我可以干什么呀?啊,这个我可以来干这个事儿,第一个我反射我可以搞到一个对象。真正class对应的对应的类的对象,这个可以搞懂。通过反射画一条线过来,到它就反射。反正可以呀,肯定可以呀,是吧?啊把这个搞到之后的话呢,然后啊,哎,我还看到了什么呀,然后啊看我我我这块一看是吧,发现这是不是我的列名啊,这是不是这这这这上面是不是我的属性名啊,底下是不是我的属性值啊,那刚好进行装配啊再进行反射。
48:19
再进行一个反射,怎么样为对应的属性赋值反射为。对应的属性赋值。清楚了没有,这就是整个的过程,反是啥时候用,终于找到地方了是吧,就在这个时候用。这样好一点吗?
49:04
小。行,差不多。好,那于是的话呢,我们把这个图我们看一下,看一下第一个的话呢,有一个circle circle什么样我也不知道,但是我们要我们有个要求,这个circle列的别名要跟我传入的这个class对象的属性名一致,这没问题吧,因为我这个circle跟class是不是一起传的呀,我想得到customer通的对象,那我后尾就是让customer通的别名呗,好,这一起传吧,然后的话呢,我得到一个结果集,结果集我就可以得到你道赛me data塔,然后的话呢,我们就知道每一列的这个别名都是什么,具体这里边放的比方说就是普罗ID啊,Type啊,ID卡这些东西,然后他俩放一起我可以知道,诶,我有一个列明,我有一个列值,好了,这块虚膝以待啊,Class对象反射得到这个对象,然后这个对象一看,诶,这是我的。
50:13
属性名,这是我的属性值,好吧,用,反正一装不就可以了吗?这就是整个的过程。好,过程清楚了,下面我们来看具体的直线步骤。回来吧,那get方法,这是我们测试的啊,现在这个get方法,这test get这个不行,好了,往这看,这是get,这是这是get的方法,首先第一步得到S项,这是查询,那查询里边如何去得,如何去得statement,如何去为这个赋值,我们不讲了,如何查询也不说了,好了,第二步是啥来着,第二步得到对象,这我们知道,哎,上面了哈,我就可以搞到好了,搞到之后呢再来。
51:23
三是干什么来着得到?啊,创建一个map,创建一个map对象,这map长啥样呢?这样的string啊键直对见直对键是什么呢?电是啊这个,这是circle语对circle查询的列的列的别名,注意一定是别名啊,因为那个列名和那个主姓名不一定对得上,我靠这个列的别名去映射值啊列的值OK好了,第四步。
52:12
肯定处理结果及怎么样填充我这个三对应的map对象,对应的map对象,当然我怎么样,我得利用,我得利用什么呀,我得利用我们上面说的这个。没有好了这个再完事的话,下一步第五步。第五步,我这个卖对象已经贴完了,然后是便利。Map对象,Map。没到没到这块呢,是吧,利用反射创建谁呢?有个class吗?Class对应的对应对象。
53:04
Class对应的对象好,第五步前提是落map为空哈。不为空,不为空底。空的话就没意思了,好了,然后的话呢,便利。便利map对象,然后怎么样利用反射,利用反射。B。Glass对象的对应的属性。负值就是这个步骤,刚才这个步骤的话呢,先前那个文章已经写完了是吧,大家把这个填一下,然后回过头来看我们用到的关于result set me的这个东西呢,就在这第一个我可以通过这样的方式得到这个对象,第二个我需要用这样的两个方法,具体写的在上边我已经,呃,我已经写过一遍了,大家只需要按照这个步骤的话呢,再来填一下,然后再来测试一下这个方法,看你写的这个方法好不好用。
54:19
来我们再来看一下这个过程,大家看最开始的时候呢,实际上我是传入了三个参数,一个是circle,一个是我们要获取的对应的class对象,还有是填充circle可变参数的,呃,填充circle的一个可变参数,可变参数那个我就不写了啊,利用circle。干什么呢?我可以查询,查询得到对应的一个。是肯定可以的查询,然后我利用这个result set呢,我还可以得到一个result set me data,用这个result set me data,我可以得到具体查的这个每个列的这个别名度是什么,比方说ID呀,Type啊,ID cut呀,Exam cut呀等等等,哎,我可以得到好了,然后呢,我利用这个结果及和这个别名一起,我可以得到我查询之后整个这个结果,所以上面这个别名是什么呀,上面这个呃,列名是我这个别名啊,Class对象通过反射可以创建class对应的类的对象,那对应的类的对象的话,它一定是有什么呢?一定是有属性的吧,这些属性我在写circle的时候,我要求这个属性要跟这个列列的别名之间有一个对应关系,注意是列的别名之间,而不是列名之间,然后再利用反射赋值就可以了,又是整个的流程。
55:49
嗯。好了,那再回来看我们这个方法。
56:00
这个方法的话呢,我们刚才我们已经写了大部分了啊,我先写完,然后大家的话呢,这个是填完得到result,在me r SMB等于result set。点塔。然后创建一个map map string是object。Y等于六哈西麦。然后我们需要处理结果及well,处理结果及一定是2s result set my set.next如果要是有下一行的话,我就把下一行给它举到,注意我现在的话呢,我是得的是一个对象,所以说往下得一行就可以了,一行一,然后我们来。
57:00
一行,一行有多个列,负循环处理多个列,Int I等于零,I小于RSMd.get column count I加加我去得列名列的别名label等于RSMd.get。I加一,因为这个是从一开始,然后这个广告之后的话呢,我再来得到我们的column value,为什么得呢?是不是得RS啊,That that that,不是你也可以写什么呀,也可以写I加一没问题。正好是一个对一个的,然后把这个放到我的values里面去变column label值,Column value写完好了。如果不为空的情况下,一。
58:04
怎么判断不是空啊?y.S大于零的情况下对它进行。历。当然,我先需要分析对象op op等于class class.new然后一个一个赋值或循环map.n string。How。只是。value.ent site OK,不值reflection the field value。街。Film。Value OK,那得写一个呀,Spend field name等于entry.get key。
59:06
Object object value等于N垂点get value写完好了,写完之后的话呢,到这块我们写的这个什么呀?哦,这个写错了啊,应该写ENT en形写好。Entry。在这儿吗?这有啥问题啊,写了啊,这写来这写完之后的话,我们这个方法就会变得够的通用,就是说以后我只要是想上数据库里边获取一条记录的话,只要有跟它对应的类,我就可以获取到,于是我们看这个方法吧。
60:09
这两个先住掉。哎呦,有异常第一个搞定了啊,第二个说啊,又是又是ID的毛病。大家看这两个对象,两个对象我调的是一个方法,这就是我们一个底层的代码,就是说我们以后啊,写完这样的DAO之后,这个DAO会变得比较通用。这就是我们要学反射的道理,如果我们仅仅是用JDBC是吧,比方说啊,我获取一个customer,我获取一个student,像我们前面这样,我写两个类似的方法的话,我们不需要反射。
61:01
但是我们如果要是有更高追求的话,这个时候反射就至关重要了。当然后边的话呢,我们会学到一些工具类,那些工具类的话呢,已经把我那个代码写好了,如果你不想知道为什么的话,你也不需要学感受,那如果我们要是有更高追求的话,就得知道感受好了。大家把这个方法给完成吧。
我来说两句