00:00
好,那接下来呢,我们就来写这个。代码啊,把这个流呢,就要写到click house里边啊呃,那之前我们提到了。一件事对吧,接到什么事呢,就说。咱们其实是有一个JDBCS可以用的。对吧,而前面Phoenix那边呢,Dim层咱们并没有用,原因是在于。DM层里边我们一个流里边有所有的维表,它肯定不止一张维表数据吧,就算你现在是一张,那未来它肯定也是多张呀,对吧?啊,因为我们要做到动态的获取配置信息,增加我们要导的这个。维度表对吧,那未来肯定不止一张好。所以当时用不了JD bc think,那因为咱咱们刚说了JBCS呢,它适合往单表里面写,而现在我们这个流里边是不是只有一张表的数据,对吧,它刚好就唯一对应我们click house里边的某一张表。
01:07
没毛病吧,就对应一张表,所以咱们这个地方呢,可以用什么呢?JD bc think。好,那我们就直接来点。I think对吧,那我们写的是JDBC点。呃,那这里面呢,有很多的参数。而且呢,跟卡夫卡一样,我们是不是可以把这个东西给它写出去啊,写成一个工具类对吧,那这样的话,每个人来调用的时候,我直接写工具类,那多好啊,对吧,卡夫卡呢,我们生产者跟消费者都写到工具类里边,形成一个方法吧,对吧,传入不同的点就是主题呗。对吧,我们自己传入主题,那这边是不是也一样啊啊,那我们无非就是说你要写的这个S是不是不一样,S肯定不一样吧,那我主要传这个S克进来,我们想的是不是这样,但是至于还可能需要传什么东西进来,我们再聊呗,对吧,反正这个东西呢,肯定写成工具类,怎么样要更。
02:10
方便一些,你想想看是不是。没毛病吧啊,所以呢,这块呢,我们不这样写,我们写成一个工具类啊,这个呢,我们先注着掉啊,要不然它一直这个类飘红包错不爽啊呃,到这边来,第第B我给它收起来啊,这个都给它关起来。方暂时不用啊,账号B用不到了common对吧?啊YouTube好,那在这边呢,我们建立一个。呃,叫MY。可以吧啊,叫你名字啊。那这个里边呢,有一个静态的方法public。Static啊,那返回值类型肯定是jdbc.s这个方法的返回值类型吧,对吧?好,那这个还得找一下啊。
03:02
点好,那我们点进来。呃,那它的返回类型呢,叫think function,但是呢,要有具体的类型,对吧?啊,因为它是一个什么。率型方法啊好,那我们如果说写具体的类型,我们应该写谁。啊,我们这个方式这个要写谁。很明显应该写这个keyword b,大家想是不是?如果说我们要写的话,是不是写这个keyword病啊,对吧?好,那我们就先这样写一下啊,到时候再说叫get。方式。对吧,好,先这样来写。但是我们仔细想一想,我们写这个keywordd,它合不合适呢?因为就目前来说,我们发现这个地方呢,它需要一个泛型。
04:01
对吧,啊,那我就给一个。Keyword b很合理啊,因为咱们的留这个数据是不是keyword b对吧,那你边每一条数据都是keyword b,因为这个think啊。那the think都写出了,那大家觉得这个东西它肯定不能是什么输出的类型吧,肯定输入类型,看啊,Type of in。对吧,好,就输入数据的类型,那我们输入数据类型,那不就是keyword b吗?也没毛病啊,对吧,那你想一想。它会不会有什么问题呢?就是如果说我们用了这个keyword b。好不好,大家想好不好。这个地方用keyword病好不好?嗯。
05:03
诶,那那提到了不能通用啊,对了,我们为什么要写这个工具类啊,不就是为了我们以后的需求可以复用吗?对不对,那每一个需求当中,这个招聘当然不一样了,你你说下面的所有的需求招聘都长这样吧,怎么可能每一个都不一样嘛,因为都独立的一个需求。是不是啊,每张表都不一样,所以呢,你要是写这个扎B不太合适给我,那我们写什么?那我写什么?那就写什么写什么来告诉我。啊,有的提到了写object,有的人写泛型,对,其实用泛型更好一点,对吧?啊写泛型,因为当你调用的时候呢,这玩意是什么。就这类型好,那这边呢,既然是泛型的话,那在前面要加一个泛型的声明,你看啊,当我不加这个东西的时候,他怎么样,他。
06:07
他直接飘红,你发现没?对吧,加了它就不飘红了。啊,这是泛型的一个声明,你要声明一下,比如说类上面你一个类是一个泛型类,你也要做声明,对吧,那其实这个东西呢,也比较好理解啊,就是为什么这个范型他要做一个声明,好,那假如说我举个例子跟你说明白这个问题啊。假如说我们并不需要声明。啊,假如说这个东西不报错,我举个例子啊,假如说你泛型这样写不报错,对吧,我们就反着推啊呃,你想一个问题,想什么问题呢?那你说这个T到底代表的是泛型还是具体的一个类型呢?比如说啊,咱们现在有一个招聘,这个招聘呢,就叫T。类名就叫T。那你说这个T,它到底是泛型还是具体的类型呢?能不能区分开,你告诉我。
07:05
能不能区分开?很明显区分不了吧,对吧,那你凭什么说这个T是泛型,或者说你凭什么说这个T是具体的类型呢?假如说我这儿真有一个这样的一个招聘,你到底是犯刑还是具体类型呢,不知道。那谁知道呀,谁都不知道对吧,所以呢,如果说你要想代表泛型,你在前面呢,给我增加一个额外的说明。对吧,你给我增加一个额外的说明,那我就知道哦,你是泛型,我不会去找这个什么扎病了,对吧,也不给你报错了,能明白吗?对吧,从这个角度来说的啊,其实你这样去理解会有很多东西好理解很多。啊,那要不然觉得你死记硬背,就觉得很奇怪,他为什么前面非得加一个这个声明对吧,还记不住,那这个很好理解,因为他就是为了区分泛型与具体类型对吧,所以在你定义成泛型的时候呢,它额外加点东西加以区分对吧?好,那这里边呢,我们就先直接返回JDBC。
08:06
点think对吧,好,那这边呢。啊,它本身就是T,其实无所谓了啊好,那我们看一下这里边的一个参数啊,看哪些东西要从外面传进来,那第一个S语句,这个东西一定从外面传进来的,是不是因为每张表不一样,所以S呢肯定不一样啊好,那它呢一定从外面传进来,所。说个语句对吧,好。第一个参数有了。第二个参数它叫什么呢?叫JD bc statement builder。这个东西。干什么用的?第二个参数做什么事的可还记得?来说一说。啊,因为前两天的东西比较简单啊,我其实很少问大家对吧?啊,那从今天开始呢,这个难度又上来了啊,多问一问,带着大家去思考啊,前面两天呢,我根本就没有让大家说去怎么回答问题,对吧?因为太简单了,没得回答,说实话我都觉得那东西都不用讲,嗯,自己去看一看,粘运行就完了,对吧。
09:17
啊,那你现在想一想,还记得吗?这个第二个参数叫gd bc statement builder,它是干什么用的?这个参数干什么用的?哎,姚总说了,给预编译的circle占位符进行赋值。有没有毛病,对的啊,没毛病对吧。叫statement build,构建那个prepare statement对吧?啊,去构建这玩意儿,就是说给我们circle里边,因为我们要干什么事啊,我们要把每一条数据写到这个。Click吧,那S里边你不能说,你假如说insert对吧,Into这个表T1啊啊,然后呢,你不能把value全写上吧。
10:11
你把这个value全写上。那也不对呀,你在外面能把这里边值附上吗?肯定不行,你起码这块。得是问号吧?是不是,然后接下来呢,把我们每一条数据,哎,里边的值呢,付给他账号B里面值付给他,对吧,所以第二个参数赋值啊赋值。好,那这个东西呢,我们先写上另有一个JD VC build啊,它里边呢,就有一个。你看啊,这个是prepare statement预编译色口,这个T我们写的泛型对吧,就是我们招聘的那个对象啊,那等会呢,这个东西在里边好不好写我们再说对吧?好,那接下来继续。呃,我们用下面这个参数啊,这个叫gd bc excution options,还有一个gd bc connection options啊,呃,那这个执行选项,这个是连接选项对吧?连接选项比较简单,那就是URL username password driver这些东西对吧?但是c house呢,我们进入客户端的时候没有用到user nameme跟。
11:14
Password对不对,根本就没有用到啊,所以呢,也不需要那这个执行参数呢,呃,更重要的用来控制。批量提交吧,对吧,啊,那这个我们完全可以在里边写啊,另外一个,但是他俩呢,都是这个什么。都不能直接去溜的啊嗯,它都是私有的点build啊,最后呢点build。对吧,我们先把两个参数构建好。又有一个。G bc connection options.g bc connections对吧,点build,哎,把这两个先构建好,那这里边呢,我们比如说批量提交点with,假如说啊,我们数据量其实比较小,我们五条五条一写,对吧,然后呢,In啊那一秒钟。
12:05
一秒钟,呃,那你要两个参数,第一到达五条的时候就写一次对吧,那假如说我数据就是四条,我后面没有数据来了,那你不写出去吗?那也不行,还得看一秒对吧,或者一秒到了他俩是或者的关系,满足任意一个条件,那都会将数据进行写出对吧?还是批处理好,那这边呢,就是点drive对吧,驱动。那咱们呢,是已经写到那个常量类里边昨天粘的对吧。克里奥加我啊,好,那接下来呢,是with u。啊,还是G康点。克林的URL。OK吧,啊,这两样东西,那这块架子我们就搭起来了,但是这块我们之前说的这个工因类比较难写,难写的就在这块,因为它是什么。泛型。啊,他要不是泛型这个东西就简单了啊,关键的问题在于它是泛型啊。
我来说两句