00:00
好,那接下来呢,正常我们要去调用的时候就比较简单了,直接到V的APP,那我们去建表,然后把这个呢,搜索语句一写,把这个搜索语句写,但是呢,既然我们都已经把这个东西泛型都用上了,对吧,所以索性呢把这个搞得更复杂一点,我们把它搞得更通用一点。啊,更通用一点,那什么意思呢?那现在看啊,现在看我们现在呢,是便利了当前的所有字段去赋值。啊,那也就是说我们未来在隔house里面建的表,跟我们的Java并字段的个数是不是要一样?对不对。因为未来表有多少个字段,那我们的S就有多少个问号,对吧,我T对象就有多少个字段,然后呢,你都要写进去,对不对,这个有没有问题。
01:02
这个是没有问题的吧,啊啊,那有没有这种可能性呢?啊,就是说我们招聘当中的字段。有辅助字段,哎,比方说我招聘当中有五个字段。但是招聘啊。有五个字段,但是呢,我的表。只有四个字段,因为我这五个字段呢,不是说所有的都要,我可能呢,有一个是辅助字段,就是说我们要干什么事呢,就是为了完成我们统计啊,我们需要一个辅助字段帮助我们统计,那这种是不是有这种可能性啊。对吧,那如果真的发生了这种现象,那你想想看,这个工具类还能用吗?用不了了,因为你五个跟四个。不行。对吧,这个能理解吗。这个能不能理解?
02:04
对吧,所以呢,我们就需要加,哎,加一个东西。啊,加一点东西,那其实在招聘当中啊,来看啊呃,有的同学可能知道。比方说我们就拿这个。有没有同学知道这个有一个注解。无子不行啊对,那这边呢。它就属于这个渣病里边的。对吧,就属于扎病里边的好。那这个东西有没有同学知道它是干什么用的这个注解?它其实是什么呢?在招聘上去添加啊,某一个字段上面呢,可以添加上这个注解。对了,哎,向总啊知道啊,就是说当我们当前这个扎B要准备序列化的时候,它这个字段呢,不做序列化对吧,我不写出去。
03:08
啊,就是这个字段呢,不要了啊,因为它可能根据其他字段生成,那我没必要把它写出去,我最后自己可以生成这个内容,对吧?好,那现在呢,我们就类似于这样的事情,我们做一下啊,我们自定义一个注解,我把这个先拿一下,我们自定义一个注解啊,在这个病当中。我们要写一个注解对吧,还是一个Java class,然后呢,我们调成interface,然后呢,我们叫think啊,那这个表示不写出去啊,这个注解的作用呢,我们就是表示不写出去,这个我就看见了,我不需要它,对吧。不需要它好比方说这里边它这个字段呢,是多余的,我不想写出去,对吧,我就加一个at。TS。对吧,加一个他啊,但是现在呢,它这个东西呢,嗯,直接报错,那是因为我们这个注解什么东西都没写呢。
04:04
对吧,什么东西都没写呢,那第一个我们要给注解加一个什么呢,叫target。他给的就是说它的一个作用范围,对吧,那我们可以用fail。啊,加一个这个field,我们看一下啊这个东西。Target no application to tie,哎,这个地方target我看一下啊。没问题。这是一个注解啊,对啊,这个这个地方写错了in interface了,对吧?啊,这个刚才注错了。应该是at in the face啊,刚才这个注意一下,我刚才创建错了,我比方说我在看一下A啊,我刚才摁了一个项对吧,它是in inter face接口不行啊,那我们得选到。Annoation对吧?Noation啊,其实就是interfa前面加一个at加at注解对吧?这个只是说明一下,刚才我只摁了一次下啊,就是你自己选的时候要注意一下,选这个注解啊,刚才呢是interface,所以直接报错对吧?好,那我们作用于啊,作于这个啊,行,那此时呢,这个地方就没有问题了。
05:11
对吧,还有呃,第二个我们还给它加一个注解,表示它的一个作用域啊,表示它的一个作用域,那这个呢,我们去拿一下啊,在这个里边我们加一个这个注解,把它拿过来。什么时候去保留?对吧,啊,什么时候就保留retention,然后呢,Longtime我们运行时都要保留,对吧,只要运行时有就够了啊,之后运行时啊,加一个这个,这个叫作用范围,因为大家发现有的注解呢,添加在方法上面,对吧,有的注解添加在类上面,有的注解呢添加字段上面,那这个都可以啊对吧,Field method,还有这个比方说我们看包。对吧,构造器construct对吧,等等这些都有啊,就可以指定当前这个注点在什么时候用啊好,那这个地方呢就有了,然后接下来呢,我们在visit states里面加了这个东西,哎,那现在这个东西写好之后,那我问大家啊,我这样写的未来这个东西就不写出去了吗?
06:14
他就不会写到克雷house里边了吧,就这样搞一下就够了吗?够不够?我们就这样写一下,能行吗?对吧,那这个肯定是怎么样不行的,那凭什么呀,你加了一个注解,你这个注解里边什么玩意都没有,你就告诉我这个东西呢,就不会写出去了,怎么可能呢?所以我们还需要做一个加工。对吧,我们还需要做一个加工,那怎么做呢?在我们注意看啊,在house里边啊,这一块呢,跳了几个类啊,挑了几个类,对吧?在克号优里面我们做一个加工,怎么做呢?在这边来啊。
07:11
获取字段上。注解啊。Get annotation。啊,当然了,也可以GET4,也就是说所有的注解,因为有时候我们字段不止一个注解,多个注解对吧,那我们要获取一个注解,获取单个注解的话,就要传一个大的class对象去了,那我们呢,是有一个trans。呃,Think对吧,点class把这个传进来,CTRL得到一个no。得到一个annotation,好,那接下来呢,If这个annotation它不等于no,说明有注解对不对啊存在该注解,那如果有了这个注解我就不写出去,那不写出去就下面的你就不要做了,对吧?那这边我们写什么?
08:18
如果它不等于,那我们写什么?对了,哎,我们写一个continue。对吧,我们就写一个contain继续好,呃,那我这样写完了,大家想一下这个地方有没有问题。就OK了吗?这个地方有没有问题?仔细想一想啊,我这个地方直接写continue,它有没有问题?啊,如果有是什么问题。如果有的话,有什么问题啊。
09:03
好,庄总说了,下面不能用I。那这个什么意思呢?其他同学能不能想明白?这里边儿存在什么样的问题啊。对,顺序错位了。啊,错位了,什么意思呢?我们一起来看一下这个地方,比方说我招聘当中有A。BC。De,五个字段对吧,好,未来写出去的时候呢,我只要A。BD对吧,我只要这四个字段啊,那这个C呢,我加了这个注解对吧,我加了这个注解at。啊叫TS对吧,加了这个注解啊。我自己写了个注解,那也就是说这个C不要好,那我们看啊这边。在我们变历的时候,它是不是01234,它的I是不是01234,呃,在里面赋值的时候,Prepare statement,它里面赋值是1234,从一开始吧,对吧,我们看一下它有什么问题啊好,那第一个字段没问题对吧?I加一嘛,我们都是I加一啊,用的是I加一对吧?好,A能匹配上B,能匹配上C,不要直接continue跳过对吧?然后接下来本来是他加。
10:29
要复制给他吧,但是它的I是几啊?三他把这个值付给谁了?付给四了,好接下来呢,四赋值给五有五吗?是不是付给五了I加一嘛,注意是不是I加一错位了,那怎么办。这个问题首先说这个问题能不能理解了。这个比较清楚啊,这样一画是不是比较清楚了,对吧,你C加了一个这个注解。
11:11
那这个问题我们怎么办呢?怎么解决这个问题呢?我们能不能解决一下这个问题啊?不用I,不用I用什么。再搞个变量。再加一个变量J。啊,果然大家都是聪明人是吧,这里边其实有两种方式解决,第一种啊,第一种怎么做呢?咱们可以这样把规定。规定啊,所有这个。加了这个注解的全部放在最后。可不可以?我直接告诉编写代码的人,以后你写这个招聘的时候,你把加入这个注解的全部放在最后可不可以?
12:13
这种方式也可以吧,对吧,嗯。加了这个注解的全部放在最后,当然可以,因为最后嘛,反正大家都过滤掉,都不要对吧,这是一种方式,还有另外一种方式,搞一个变量,你发现了一个问题啊,我们每多一个这个。注解,是不是我们在赋值的时候,这个数据减一就好了?对吧,你出现一次我就减一,出现两次呢,我就减二,对不对。对不对。有没有问题?是不是也可以啊,刚才有同学说了,用两个变量。
13:00
啊,用两个变量对吧,好,那这边呢,其实每多一个这个注解往前推进一格。I减减为啥不行?哎,减减。就是说什么意思,就是。孙总的意思在这边。卡了没听到是吗。啊,那我重新说一下这块啊,首先这个问题我就快速说一下AB啊C我我就搞三个吧,啊,我就搞三个啊ABC3个好,那我表呢只有AB2个。就AB2个字段对吧,好,那这边呢是012,这边呢是一二对吧,好那如果说我们直接这continue这个中间是I加一对吧,它能匹配上,好它跳过了不管,那I加一,它I是二对吧,二加一三它对应的三,但是不行。
14:06
哎,不是啊,这个地方是C啊,这个地方CB跳过啊,B加了这个注解啊,B跳过它加了三啊,这是第一个问题啊,我们首先。直接这样写,直接加康六肯定不行。OK吧,好,接下来,接下来什么问题呢。那接下来呢,就是有同学提到了A减减为啥不行啊,那你I减减的话,I会影响到电力。那不还是这个字段吗?你们一直在这个字段翻,一直在这个字段了。对吧,你在里边写一个A减减,你不没得玩了吗?只要加了一个注,这个注解死循环了,对吧?啊,它会影响到这个变量。万达这块有问题吗?先说万达的问题啊。能行了吗?
15:08
不太行。呃,来我跟你说细一点啊,ABC这个东西这个很难理解吗?啊AC对吧,AC好,这个是一二,这个是12012啊。零二好,我跟你说为啥I减点不行,这边呢,是at一个注解S格对吧,你I等于一了,你判断它有这个注解,你A减减是不是减一了,又回到零,回到零又加一不是又是自己了吗。你又拿着I去变利加一,再开始continue的时候,是不是I加一重新变利啊,你变利的时候I变成了一对吧,一呢,你减回去,减回去是零,然后返回的时候是不是又变成一,这不死循环了吗?就死就完了,对不对。肯定不能挨减减呀,对吧,这个没问题了吧。
16:02
就绕在这个点是吧,好,那我们第一种方案啊,可以将这个内容干什么。懂了对吧,把这个第一种方案啊,我们可以把加了这个注解的全部放在最后,这种方案能不能理解,刚才不是那个唐总那边说没听清吗,这个OK吗。我们可以把当前这个注解加上这个注解的字段全部放在后面,这是不是一种啊?这个没问题吧,好,那还有一种方式怎么做呢?来我们发现到一个问题,每遇到一个,这个注解是不是所有的字段往前移一格,那你是二,二加一等于三,我应该还是二,是不是要减一啊?每遇到一个是不是减一对吧?遇到两个我你干什么减二,遇到三个就减三,是不是往前推进啊?也可以吧,这种方式能不能理解大家?我每遇到一个注解,我就把这个。
17:01
往前移一格。这种方式是不是也可以啊,对吧?所以我们用这种方式,那我们在循环外面定义一个什么呢?变量int叫offet偏移量,对吧?哎,那我首先给一个零,好,那如果一旦发现存在该注解,那就offset干什么?加加啊,奥赛加加对吧,好,那这边呢,我们去减奥赛,往前推移,奥赛这边好了吗。对不对,可不可以。没零吧,好,那在外面呢,我们定一个变量,变量的默认值为零,假如说你大家都没有注解,它到最后呢,都是零对吧,那减零跟没减是一样吗?减零跟没减一样,好,那万一有一个这个注解,只要有一个字段有这个注解,那我们就把这个。往前偏移一格对吧,那有两个奥塞加加变成二,那我们呢,就偏移两格啊,从这个柱点往后都要往前进行偏移,所以呢,我们加一个奥赛。
18:05
没问题吧,对吧,啊,这要注意一下注解往往刚说呢,这样去用,对吧,通过反射方式,我们就获取当前这个姿态上注解,给它去扩展一些功能。啊,给当前某个字段或者某个方法扩展一些功能对吧,这是注解,在生产环境当中可以这样去用啊,比较方便对吧,扩展功能的时候很方便啊好这个呢就搞定对吧。
我来说两句