00:00
好,那我们就继续写我们那个代码,那从这个U就这对吧,正常的从工具类开始,工具类。对对,我们来一个。叫叫H。有啊,还是有。那它是一个工具类,所以说这里的方法应该都是一个静态的方法吧,没问题吧,啊,静态的方法啊。那我们要想一下,这个工具类里边应该做哪些事情。跟通用的多个业务线都可以共用的。这种。创建名空间判断表,是否存在创建表等等这些操作吧,对吧,啊就做这些事OK。那就是创建。命名空间啊,这个代码呢,要写一次了,对吧,第二步。判断。表是否存在啊,那我们就写跟我们业务相关的几个什么删除表啊,这些东西我就不写了,OK吧,啊,就不写了啊,判断表是否存在,那接下来是。
01:07
创建表对吧,创建表。添加数据不在这里边,添加数据不在这里边,因为我们说了这个是可以跨业务线的,添加数据跟业务线是不是相关的呀,因为你要往哪个表里边插入,这是定的嘛,跟业务线相关的吧,啊,所以呢,就不放在这里边,那个就放在do里边啊,放在do里边OK,那创建表这块呢,注意是三张表了,三张表整个的列足和版本信息都不一样。发现了吗?对吧?啊,前面呢,第一个表是一个列组,最后一个表呢,也是一个列组,叫英啊,最后中间一张表是两个列组,一个一个什么,而最后一张表呢,就是。三个版本或者五个版本对吧,是多个版本啊,其他的默认的一啊,就是说它里边这个值都不一样,既然不一样的话,你要想写通用的方法,是不是把这些参数都要传进去啊,对吧?啊,那我们一个要写第一个创新并空间。
02:05
他。可瑞的应该有一个什么,然后可瑞的对吧?啊传进去一个对类型的。Namespace。那么,Space。逗号这个呢,是创建命名空间,你们写一下啊第一步。第一个方法啊,创建面空间好,那这里边还记得怎么创建空间吗?这里边写的东西。构建命名空间。描述记啊,这个时候呢,因为写具体的那个案例了,我就不是按照讲课的那种顺序去写这个代码了,我就先把注释写好,然后往里填OK吧,好,那第二步就是我们所说的去可以去创建什么。
03:03
命名空间操作了对吧?啊命名空间第二步呢,就是创建命名空间,好在这个之前中间描述器怎么创建的呀。的秘方是吧?所以我们应该写一下第一步实际上应该是什么获取。对象对吧,对象,然后后取的命对象吧,第二个获取的命对象对象。啊,那这样这个是X倍的U跨业物线用的,所以像这种对象呢,连接对象呢,以最好的方式。最好的方式还是自己去获取,自己去关闭。啊,最好的方式还是自己,如果业务线上,你当前这个业务线上被用到多次的一个对象,你可以干什么,建立一个公共的,就是静态代码块啊,或者说有一个那个呃,单利对象啊等等这些都都OK,那工具类里边最好还是自己创建,自己去关闭,因为你不知道这个工具类什么业务线会掉第一点,第二点呢,你也不知道它到底什么时候去掉。
04:12
所以这个资源一旦开了就关不掉吧,所以呢,就自己开自己关啊,你用了的时候自己开一下,能懂这意思吧,啊就自己开自己关啊,那最后创建完了之后,应该还有剩一步干什么。是关闭资源啊,关闭资源。啊,关闭资源这意思啊,那我们就来写一下啊,来写一下,呃,第一个获取它的一个connection对象是connection factory,对吧。Connection factory.create connection好,第一个contr b,它里面要一个conration对吧,那这个conration大家想一下是不是各个业务线。都可以啊,或者说我当前这个创建并空间创建表或者判断表是否存在,是不是都要啊,对,但是这个东西是一个静态资源嘛,相当于它会变吗。
05:02
不会吧。所以我们可以把它定义到。是不是常量一边对吧,啊大家用一个,因为你在当前这个项目底下,你set是不是都用一个,那我直接在这里边去创建一个是不是可以对吧,另个类叫C。TTS。啊,这个常量类啊,常量类OK。嗯,这个东西写错了吗?Constant。哦,应该是加一个S对吧,那这个东西写错了。这个东西也给他干什么?改一下对吧,啊,这个地方应该要从这个地方来改一下,我们看一下shift f6刚才不起作用了。Constant就少写了一个S上一个S,这就对了吧,刚才底下有个波浪线告诉你错了是吧。
06:00
好,这个是一个常量类,一般定义成静态的吧,这个好,它的一个对象类型呢,应该是conviration对吧?啊con是哈,多看下的啊,接下来设到这个类名嘛,啊,就是它这个变量名,常量的一个变量名一般是什么全大写吧啊遵循那个规范啊。叫guon对吧,啊等于h base comp.create啊这种方式,那这种方式就能将我们这个东西容给它读过来了,啊读过来好,这个呢是我们所说的。是贝斯的什么?配置信息啊,这是第一个我们遇到的一个常量,那接下来这个东西怎么用。直接constant对吧。我们自己写的点。对吧,啊,接下来这里面一条。这个异常呢,在生产环境当中可抓可抛,就看你业务线,如果说当前你创建这个命名空间,或者说创建这个整个的那个表当中,你各个业务线,呃,处理方式都一样。
07:13
你可以在这抓一下统一处理对吧,如果各各个业务线不一样的话,你就抛出去,各个业务线就干什么,自己去处理吧,对吧,两种都有啊,工具类里边,对于工具类里边啊,两种都有,那这块呢,我们为了方便起见,就直接干什么,我就抛一下,到时候业务线里边用到的时候,我们再自己去处理掉,对吧?啊处理掉这意思好,拿到这个连接,第二拿到这个连接点get a的me对吧,获取当前的呃的命对象,那接下来构建命名空间描述器,它是一个比较特殊的,当时需要大家记得是不是他拿着namespace。对吧,写下。Space叫对吧,点把这个我们传进来的给它扔进去点。
08:03
Build对吧?啊,点build拿到我们一个命名空间描述器啊命名空间描述器好,接下来就创建命名空间,那就简单了,这个地方呢,呃,me.C是吧。Namepa,把这个namepa命闭空间描述器给它填进去,最后关闭资源啊,关闭资源就是这个a me要关吧,点close啊,然后呢,Connection要关键close啊,因为我们抛了异常,所以说这块就没有异常了啊这意思,那我们就这样来写一下啊,大家来写一下,这个是第一个创建命密空间啊,这个工具类之前我们都写过,所以呢,这次写代码呢,不是说我们拿他的命去调用,然后前面去这样做吧,直接顺序写下来了,好,那第二个方法我们要写什么?判断表是否存在对吧?啊,判断表是否存在public static啊,这个地方呢,是布尔类型的返回值叫is。Table对吧,Table exist好,那这里边呢,要传一个string类型的。
09:04
Table name啊table name好,那接下来有个问题,这个判断表是否存在,是不是给等会创建表或者删除表这种来操作,对吧?所以这个方法应该在外面不会去调用的,是给内部人用的,所以我把它定义成什么private,如果说假如说外面要用到这个内容,我可以把这个改成。Public,但是就目前我们设计的思路来说,是不是应该这个东西是给内部人调用的,所以把它设计成private,外面你不要调了,对吧?啊,反正你也调不着,就不用调了,那先写一个返回值,为什么?First啊,或者个true这个都无所谓啊,这是最后的最终返回结果这一步呢,叫。返回结果值。啊,访问结果OK,那前面同样的道理。这两步我就直接干什么拿过来OK吧,啊,异常我们还凹下好那第三步。
10:02
叫什么?是不是执行判断了?判断对吧,判断是否。存在啊,是否存在啊,是这意思,最后返回结果之前,你要记得干什么。第四步,是不是应该先关闭资源啊,然后才能返回结果吧?啊,然后才能返回结果,这是第五步,OK,那我们写一下判断是否存在me。Is table exist对吧?Table exist在哪个地方?啊,是table exist对吧,是table,哎,第一个他要的是table name.of table name给它扔进来,看到奥加V得到一个for就型的,然后返回值就是它们啊,然后这块关闭资源就是说。me.close对吧,然后connection.close啊把这个写一下,那这个是判断表是否存在啊,判断表是否存在这意思,好,那接下来我们写一下。
11:06
第三个方法。创建表的一个方法了,那这块呢,是我们所说的public。叫create table对吧,Create table,好,那这里面呢,要一个最类型的,首先要一个表明,这没问题吧,好,那接下来回过头来我们说了当前这一个方法,我们要创建三张表用,对吧,你在业务线的时候去调用,然后就创建三张表吧,啊创建三张表那。怎么写两个参数吧,还有列足,还有版本信息,我们说了三张表不一样嘛,所以你得传进去,不能说在里边写死一个值,那版本是一个。列组是不是可能有一个,可能有两个。对吧,是不是有多个呀,所以我把列图是不是还同样放在最后,叫可变形参,没问题吧啊可变单好,那这块我们来写一下,中间一个呢是in特类型的什么版本VSS吧,Motion啊,最后一个是three点点点,然后cfs。
12:12
没问题吧,好,那我们写一下第一步。判断是否传入了。列足信息对吧,因为你可变单,可变清单是不是可以不传啊,第二判断表是否存在。那第三步。表对象跟表对象没关系啊,叫获取c connection对象吧,啊connection对象是不是接下来要这个东西,因为你判断表是否存在之后,假如说表不存在,你要创建了,创建是不是还是要拿me对象啊,那第四步就是获取呃的me对象。
13:00
或许玩偶的命对象,你要想创建成功,你先有一个叫。表描述器还有印象吗?对吧,那就创建。匿名空间什么叫什么意思啊?我表明直接是怎么写说了很多次了,这个名空间冒号表明啊,这是一个整体的一个表明啊,不用指定命名空间对吧?表明的定义的时候,你命名空间叫A,我定义表的时候A不就完了吗?对吧?啊建义这个内容就行了啊,你还在这里边去拼接不更麻烦吗?还拼接冒号对吧?啊,直接传进来就带冒号了啊表明就带冒号这意思接下来是创建。表描述器对吧?啊,创建表描述器好第六个。叫循环添加列组信息对不对。
14:03
列足信息好,还记不记得,在添加列足信息完了之后,你应该给列足是不是有一个列足描述器啊,对吧,列足描述器里面是不是设置这个版本,所以第七步应该是设置。版本对吧?啊,设置版本这个意思啊,添加猎头信息啊,在这设置版本,设置版本完了第八步应该还是什么。创建什么表了吧,啊,才到创建表操作啊,这一步呢,是操作好,操作完了之后,第九剩最后一步了,是关闭资源吧,啊其实我们要写的,你真正创建表要经过这些步骤啊,经过这些步骤。好,那我们一个一个来写一下,往里面把代码填完,第一个if cf.length如果说小于等于零的话,我们就直接so,一句话说。清设置列足信息对吧,啊点点点,然后呢,直接。
15:09
没看掉是吧,啊不走了,好第二步判断表示完if。ISA table exist把table name给它扔进去啊,有一常我把话抛一下啊,如果说这个是不是存在啊,存在的话,我们SO1句话说,Table name加表以什么存在。啊,然后直接吧,啊直接好,那接下来是获取connection对象啊,那这个connection。fair.create connection是constant底下的一个con,给到大家be得到连接,对吧?好,接下来连接获取me connection.get me,对吧?加B得到me之项,那接下来表描述器应该怎么获取?
16:03
出来的吧,啊他就正常了,你一个叫table叫H。Table吧,他这里边要一个table name的对象,那table name.off table name给它扔进去,看到加V得到的表描述器,好,这块呢是循环添加cfs点。货对吧,一个一个的。设置版本是不是应该在这个做循环里边啊,对吧,第一步应该就获取一下列足描述器啊又一个h column describe啊column describe OK b啊这个地方呢,要一个family,它是不是可以传string类型的CF扔进去吧啊CF进去加V得到X然入器啊接下来设置版本describe.set max version,把我们外面传的version给它连进去吧,啊扔进去好了,那接下来是不是添加呀啊添加列读信息了,那就是h table described.at family吧,At family,那这个呢是h column describe诶给它扔进来好认进来,那这块就搞定了吧。啊版本呢也设置进来了啊版本也设置进来了,那创建表操作是不是就进来了?
17:20
对吧,就拿着me对象点create table h table describe啊,这个搞定,最后呢,关闭资源就简单了,me.close然后是connection.close。对吧,啊,就做这个事儿啊做这个事儿,所以呢,你前面API如果说你没有练的差不多的话,那你这块你可能还是有点问题的。呀,前面跟大家说了练三遍,你练了几遍?还是一是吧。
我来说两句