00:00
好,那第二步叫校验并见表对吧?啊,校验并见表,那我们就check。好。呃,我们自己写一个方法。好吧,那这里边要放哪些个数据呢?首先你建表,你肯定要有表明对不对。Get table表明要有啊,那字段总要有吧?Columns主键对吧,点。PK啊,PK啊,然后还有一个扩展字段。扩展字段对吧,那我们电表肯定要这些个字段,好,那我们alt加回车自己创建这个方法啊。这个呢是见表。B。见表对吧?啊,校验并见表,OK,呃,那么在这个里边呢,我们肯定要有这个Phoenix的连接对吧,还有这个参数等等的这些东西,包括呃,依赖我们之前导过了对吧?啊这边呢,报错我先让他不报错。
01:19
又有一个叫table。Process function对吧?呃,那很明显呢,咱们要创建连接啊,获取连接的过程当中呢,还要有这个驱动啊等等这些东西都需要去。有。都需要有对吧?啊,所以呢,我们先去搞一个常量,然后呢,把这个什么驱动啊,库明啊等等这些东西呢,都放进去好吧,那这个常量呢,我就直接从这去拿一下了啊。呃,但是这个里边因为出书啊,只能写到三级标题,所以有很多东西呢,就嗯不太好找啊,近代分流我看一下这边依赖都已经找过了。
02:00
对这个这个依赖都已经导过了吧,因为我们都写过了啊呃,是这个广播流。嗯,对这个啊。叫GM config,我们定一个常量,这个常量当中呢,就是我刚才给大家说的驱动啊,你的地址啊,库名啊这些东西对吧,你直接拿过来就好了啊。来。三个一个呢是库名啊,每个班呢有个库名,那这个呢,我们就改一下啊,叫220212,诶对吧。呃,接下来驱动名称,嗯,连接地址OK吧?啊,咱们连接参数这个先搞一下,呃,那么接下来呢,我们还有这个连接。对吧,我们还有这个连接,那连接按正常来说呢,应该写在open方法里边,对吧,创建连接啊,但是呢,我们其实要创建连接比较多,因为流嘛,对吧,所以我们搞一个连接池啊,大家在JDBC的时候已经学习过了啊,就是。
03:02
用的德鲁伊构建一个连接池,这属于一个工具类,对吧,这个呢,我得拿一下啊。呃,德鲁伊依赖打过来。把其他先关掉啊。嗯,那这个呢,往后放就可以了,对吧。德鲁伊的依赖啊,那接下来呢,把这个工具类拿过来,其实它的构建一个池子,也就最重要的就是你把那两个参数放进去就好了。一个。工具类,德鲁伊连接池的工具类,好,那我呢把它打过来啊。我们来大家看一下啊,大家虽然写过,但是可能忘掉了对吧,但是没关系,我们来看一下啊。好,那这个依赖呢,这个我得重新导一下,因为可能包不太一样,对吧,因为刚才我们已经导了这个产量类啊,首先呢,定义一个这个连接池的一个对象,然后呢,在这里边去创建,那其实最重要就这一行代码加上这个。
04:14
这三行就搞定了,那什么呢?直接new一个德鲁伊的连接池,然后呢,设置drive对吧,设置URL最重要的他们俩对吧,但如果你要对接的是买搜,你要设置username,设置password。对吧,啊,你要再多设置几个东西。好,那那接下来呢,就池子当中的数量,最大连接数啊,那这个是什么呢?初始化池子的数量,就是说你在构建这个池子的时候,那就带了五个。对吧,啊,那最大到20个,那也就是说当你不够了。不够了啊,那在创建啊,创建新的。对吧,创新的就这意思啊,那然后呢,还有是否检查对吧?呃,在创建的时候要不要检查这个连接是不好的啊,然后要在你归还的时候检查连接是不是好的等等这些问题吧,对吧?这些参数呢,都写了注释,你可以看一下,其实最最重要的就这三个,你有这三个就可以运行了啊,一般呢,我们在额外指定一个池子,数量其实就差不多了。
05:16
OK吧,其实他也不难啊,看着好像挺吓人的,这么多对吧,但是你就看一下,其实这里边参数呢,都比较简单一点啊好,这是我们的连接池就搞定了啊,但是关于连接池的初始化呢,咱们肯定要放在open方法里边,我们一个变异度有一个连接池是不是就够了。对吧,因为它是不可序列化,所以你跨并行度使用也用不了啊,所以呢,在这边我们应该初始化连接值对吧。得有个open方法,因为它是process嘛。所以我们肯定可以写这个open对吧,那这样的话呢,我们应该在这边定一个什么。定义一个。连接池对象对吧,当然这里面呢,就大可不必static了啊。
06:02
那我们要有一个连接池啊,那在这里边做它的一个初始化,诶等于我们用刚才的那个工具类点create。对吧,那我们这个连接就。搞定了。对吧,连接就有了啊。链接直接就有了,对不对啊,这个就很爽。那接下来我们在这里边来。构建,那呃,我们是JDBC的方式,JDBC呢无非就是获取连接。编译,然后执行。对吧,我们要做的事情就这样子的。啊,最后呢,你把资源释放一下对吧?好,那我们现在呢,连接相当于已经有了。对不对,连接相当于已经有了,然后呢,我们要做的就是构建这个sol语句,最后就执行啊,那我们再想一下这个so语句呢,长什么样子,我们大致在这先写一写,叫create table。
07:01
If。Not exist。对吧,然后DB点。T。括号。啊括号对吧,比如说第一个ID摩差。然后呢,它是主键叫primary key对不对,好逗号,诶name,比如说啊,然后呢,它是what。啊,我逗号A。我操。好,然后呢,SSS这是扩展字段。对吧,这个是扩展字段,就长这样吧。是不是它应该就长这样啊呃,那我们呢,要把这里面的内容呢,把它拼接成这个四个语句吧,啊,拼接成四个语句啊,那在拼接之前呢,我们先处理一个事情。啊,先处理个事情,就是说对他的。逐渐。
08:00
啊,还有扩展作带处理一下,因为呃,有可能给了个nu值对吧,如果他给那值的话,我们就给个默认值啊,那就是这边if。SPK当等于大啊,如果你等等的,那我们就默认。其实在生长环境当中啊,主键用的最多的就是ID。在你的生产环境当中啊,未来你的为表的主键用的最多的就是这个。ID字段OK吧,好,那么还有一个就是这个if。呃,他呢,你不给是正常的,对吧?啊,你没给没给的话,你要拼接个no到搜里边是不是也不太合适啊,对吧,所以呢,我把你改一下啊think。如果呢,你是那直播。不要那纸,我要一个。空串这样比你浪值好一把,对吧,因为你没给,那你是个浪直浪值拼接到周串里边咋拼接对吧,我拼接到最后是个空串是不是好一点。
09:01
对吧,这个意思好,那接下来呢,我们在这儿要拼接这个思语句,很明显这个当中呢,它要怎么样。添加东西比较多,还得判断它是不是主键。它是主键跟不是主键后面拼接的内容还不一样,所以很明显要用循环吧,啊那既然用循环的话,那这边呢,我们。创建。见表circle语句对吧?你看你有一个spring build啊,然后呢,把这个线拿过来。Create table is not exist对吧?这一边拼接的时候注意一定要有空格啊,然后再接下来点end。咱们有一个这个库名DB对吧,库名库名呢来自于GM。conflict.stem。对吧,好,那继续点aend,然后呢,一个点啊,继续点end,然后呢,Think。
10:01
Table。对吧,好,那之后呢,把这个括号我们加一下吧,好那这样啊,这样看更好一点。好继续点,诶,那左半边括号我们加上,那这个呢是。烧烤。OK吧,哎,那我们现在这个界面语句已经写到。这个位置了,接下来这括号里边写什么。字段这个得循环就行了,对吧,好,那这边怎么写啊。循环我们得得对谁循环呢?对它它是个字符串,那我们要对它进行切割对吧。点split啊,比如说我们里边呢,未来都写的逗号啊,R加V得到一个S。啊,接下来呢,对他进行一个。循环,那就是for I循环对吧,因为它是数组,数组呢,它没有这个,不能写这个什么增加for循环啊。好,那这里面呢,就是对它进行一个便利了,那接下来呢,Column。
11:02
哎。对吧,把这个列就拿到了,而我们说了它是不是主键拼接的内容呢?不太一样,所以很简单啊,那怎么做呢,判断if think tk.equals谁啊?Equals这个column啊,这是是对吧。啊,如果不是,如果是的话,我们拼接的东西是不是它。对吧,把它拿过来啊。啊,如果你是这个,那我们circle.aend先把这个column扔进去,对吧?啊点aend,诶它当然了是一个字符串。好吧,呃,由于这边有括号,那我们不用管,那同学说这后面没有括号,后面没有括号的会有逗号对吧?所以像这个字段呢,你不用前面不用加空格,顶格写就行了,但是这后面一定要加括号啊,加空格对吧,后面一定要加空格,OK。
12:02
好,那接下来如果你不是,你不是的话,那我应该拼接什么,不要这个什么主键。对吧,我就不需要这个主线。呃,那还有这个逗号怎么办?注意啊,这个逗号不是所有的都有的,因为你看啊,中间的有最后一个其实就没有逗号,所以我们得判断,如果你不是最后一个字段,那我拼接逗号对吧?那怎么判断它是不是最后一个字段这边啊。如果不是最后一个字段,那么。那么。需要拼接。逗号对吧,好,那我们班的if。这个I它等等于谁啊啊或者说小于谁。那应该这个很小于的,对,那减一不就好了吗。
13:01
对吧?如果小于这个长度减一,如果等于了,是不是说明是最后一个小于,它不属于最后一个,那就是circle.end加一个什么?对吧,如果你不是最后一个字呢,你就加逗号就好了。好,那这个我们列已经搞定了,相当于已经写到哪了,写到这了,接下来还剩一个右半边括号加扩展字段对吧?好,继续写上啊。连右边括号,再继续拼接一个。扩展字段啊,那咱们到这个为止,三个语句就搞定了。对吧,咱们的语句就搞定了。没毛病吧,啊这样的一个情况啊好,那接下来呢,我们可以把这个色调打印一下啊。啊,因为防有利于我们改错嘛,对吧,那就是circle点啊SOTC一下对吧,打印啊,那接下来呢,我们要预编译circle。
14:05
编译。呃,那编译呢,就是。Connect,诶,我们要获取连接了,对吧,获取连接啊呃,登录音连接池点。Get connection。R加V得到一个连接对吧,这个连接异有异常对吧,等会儿我们再处理,我们在想这个异常怎么处理啊呃,连接点。Prepare statement,把这个circle.to string啊放进去对吧?好,有一常先不要着急,Statement,好,呃,那接下来呢,我们编译circle完之后执行。Excuse。咨询一下就好了,对吧,因为你是一个建表语句,所以我们直接可以执行啊,不用说query,如果你查询语句,你可以访问的结果,对吧。
15:05
好,最后呢,要归还资源,释放资源。啊,比如说这个prepare statement,诶他呢要close对吧,像我们的连接呢,也要。注意我们用了连接池啊,所以这个close呢,它是环到池子里边。懂吧,放到池子里边好,那接下来呢,我们要处理一下这个异常。呃,那你说这个地方发生异常了,是要继续。走还是说应该让任务挂掉,你告诉我。这个地方如果发生了异常,那我应该这个程序继续往下走呢?是我catch掉还是说应该让它挂掉。让当前任务挂掉啊,用哪个。是继续走写扣一啊,还是挂掉扣二?
16:07
这个地方。一还是二啊。那我们就想一下当前这个异常的危害对不对。对吧,有同学一,有同学扣二啊,你得想类似于这种异常的一个危害。对吧,那那这边呢是见表。也就是说这边抛异常了,说明什么问题,建表失败了。对吧,好,既然你都建表失败了,那未来你这个数据还能不能写出去。就是。A表失败了,主流来了,A表的数据还能不能写出去啊?还能不能?肯定不能了吧,对吧,好,那既然你主流的数据都写不出去了。那你这个任务是不是应该停啊,你你这样运行下去有什么意义吗?
17:09
对不对。能明白吗?就是你这个表创建失败了,那意味着未来你数据就一定写不出去。那你这个程序在运行,运行有什么意义啊。能明白吗?所以这个地方应该让它挂掉,但是有一个问题,它现在是编译时异常,它不是运行时异常,如果是运行时异常咱们就不用处理了,他自己抛异常就挂掉了,对吧?现在是编译时异常,我们还必须处理。那怎么办呢?想一想啊,那遇到这种问题,我们还希望这个肉挂掉,我们应该怎么办?
18:01
我们应该怎么办?抓try catch try catch之后呢?穿上之后抛一场漂亮还可以啊,还可以啊,还是有人知道的对吧,对了啊,就整体,呃,那这样我呢,干脆把这个整体全部包裹一下好吧。对,抛运行时异常对了,抛运行时异常对了啊,我把这个整体包裹一下可以吧啊ctrl out加T,然后呢,做一个try catch。Finally啊呃,那这个东西呢。关于连接,诶,这个执行的文没放进去,把这个放进去啊,呃,那关于连接的关闭,我们是不是应该放到这个finally里边。
19:09
对吧,咱应该放到finally里边啊好,那这个呢,一常我们去。当然做一个判断,If这个prepare statement。啊,先把它处理完对吧,不等于那。诶。呃,有问题啊,我把这个重新写一下。If prepare statement,它不等于,那那prepare statement.close诶还有异常,这个异常呢,我们开一下对吧,好同理咱们还有一个if connection。它不等于钠。对吧,那就点。诶,那他呢,有异常,诶把这个处理一下,Finally里边咱们这样处理一下对吧,好,那接下来这边如果刷到异常了,我们怎么办,在这一边。
20:06
自己抛一个音箱出去,对吧,那就是through很少用吧,大家对吧,写项目你就要考虑这种问题啊,没有一个叫什么wrong time,也就是说把这个编译是异常转化为了。运行时一条。对吧,啊创建。这个表对吧,失败。对吧,哪一张表表明写在这了对吧,好,这个就考虑。对不对啊,咱们可以这样处理一下,因为你想这边建表如果失败了,那我肯定要任务挂掉,你不挂掉没有意义了,因为你未来肯定写不出去啊,对吧,你得把这个代码调整好了,你再去运行才可以,你不能现在一直往下走,那有问题对吧?这种异常就应该让人挂掉,对吧。
我来说两句