00:00
好,继续往下呢,我们来编写读写数据啊,读取数据啊,已经有写入了,那么这边就有一个读啊,好一起来写一下啊,叫public static void啊,那上面呢叫po,那这个呢就叫get啊,那同时我们读取数据呢,也对应的正是我们she命令行里面的get方法啊,我们在介绍get方法的时候呢,已经给大家看过了啊,你在读的时候呢,哎,是可以读一整行数据的,那么一整行呢,它是包含有多个cell的,你对应的就写一个。BIS对吧?哎,多行好,那我们在写这个参数的时候啊,哎,我们在填的时候呢,它可以读一整行对吧?那这里呢,我们为了演示的内容多一点啊,我们把它呢精确到某些列啊,它可以读一整行,也可以读到列啊,它填写的参数跟上面是差不多的啊,叫命名空间表名组件,呃,列足加列名啊好,对应这边呢,我们写完之后啊,加一个大括号表示它是一个方法,对应上面呢,来写一下文档注释啊,这个叫读取。
01:01
数据啊,读取对应的一行。好。中的某。一列啊,我们既然写到column name,它应该是读到某一列啊,第一个叫命名空间名称。啊,第二个叫。表格名称。表格名称这个呢叫主见。这个呢叫列族名称啊,最后一个叫列名。对吧,好,那这里呢,我们来写一下啊,它读取数据的一个方法啊,流程呢,跟之前都是差不多的啊,第一步叫获取table啊获取。Table对象啊,叫connection.get table里面写上table name.value of啊,你写上name space小写的啊,Namespa逗号啊,Table name。好,我们点Y返回得到一个table对象啊,那接下来第二步呢,相对呢,我们上面这个它的结构都是一样的啊,上面呢,我们是创建了一个破对象,那这里呢,理所当然就创建一个get对象啊叫创建。
02:08
Get对象,好,我们另一个。Get啊,New这个get里面呢,它让我们填的还是一个行的一个信息,因为它最大读取一行嘛,啊,最大读取一行啊,那这里我们来写一下叫bit To Bit啊,Windows加V可以调到之前的一个剪切板,剪切板里面有对应的这个by To Bus,你找一下就可以了啊,我们再重新给它CTRLC复制一下,后续呢,能用得到啊。好呃,Best bus里面呢,我们来给它写上ROK啊行号,然后我们点Y返回,能得到一个get对象啊,如果这个时候啊,如果直接啊调用。Get方法。方法读取数据啊,那么就读一整行的数据啊,此时哎读。一整行。啊数据你这时候呢,如果直接对table来调用get方法,里面放一个get来放一个我们创建好的这个嗯,Get对象对吧?那这时候呢,你读的就是一整行的一个数据啊,你这样就得一整行数据啊,那如果你想要去给里面啊读某几列的数据的话呢,你需要给这个get对象添加一些东西啊,啊如果想。
03:22
读取某一列的数据啊,需要。添加。对应的啊参数啊好,那我们呢,在这里呢,来给它添加一个参数啊,在这个地方。叫get.a的。A column对吧?添加一个列信息啊,添加这个列信息里面呢,我们CTRL加V,它有by To Buy啊,嗯,填一个column family啊。还是得手动去写啊,Column family啊,在逗号啊,By To Buy啊,Column name,嗯,写写漏了啊,写外面去了。Column name啊好,对应的我们点Y,哎,不,这个不需要点返回啊,啊给它添加一个属性就可以了啊好添加完属性之后呢,我们这时候就已经确定了,它是读某一列的数据啊,那除了这个读某一列数据之外呢,在呃对应的这个代码里面啊,也能实现我们命令行里面那个读取某几个版本啊也可以设置。
04:20
读取数据的版本啊,那么在设计读取数据版本的时候呢,之前有介绍过,你能够你能够读取的最大的最多的版本呢,就是列族维护的一个版本,所以这个作者啊,直接给我们设计了一个方法叫。Read our versions啊,读取最大的一个版本啊,你也可以手动填一个版本啊,我们一般不要手动去填了,你就填这个最大的就行,因为你动去填超过了也没有意义,对不对,我们一般呢,都使用这个方法啊,使用这个方法啊好嗯,这是设置一个读取的版本啊,等我们全部设置完之后呢,调get.get啊就可以读取到对应数据了,我们点Y返回就能够得到一个result对象,这个叫读取数据得到result。
05:05
对象啊,得到result对象好,得到result对象之后呢,我们就需要去处理一下这个result这个对象,这是处理数据对吧?那它的数据的结构是什么样的呢?你点这个result这个对象可以看一下啊点点完之后我们会发现啊,它是一个自己写的一个类,自定义一个类啊,它实现了两个接口,这个接口呢叫什么什么scanner,这个scanner是什么呢?嗯,这就涉及到大神写代码跟咱们是不一样的,如果让我写的话,我肯定自己写一个及格对不对,最多呢,就是实现一下别人写好的这个迭代器啊,那这个作者呢,他就不一样,他点开这个东西啊,他自己写了一个类似迭代器的东西,叫扫描器,干这个扫描器里面啊,下面这个方法就是next的方法,下面这个方法就是head next方法啊,就这样的啊,它自己写了一个类似迭代器的东西啊好,那这里呢,我们当然可以使用这个对应的一个方法啊啊,当然呢,还有一种更简单的方法,推荐大家去使用它这个类里面维护了一个私有的属性叫sales啊。
06:05
叫一个cell的一个数组,我们直接使用这个cell的数组呢,相对要更方便啊,相对更方便,你可以直接写for循环嘛,那这里呢,它是一个私有的属性啊,不过你不用担心哎,私有的属性也不用担心,它提供有对应的一个方法能够获取到这么一个数组啊,那我们呢,就使用这种方法来进行处理啊,相对方便一点。好,到这里呢,我们来写一下,叫处理数据啊,叫result点啊叫。Re,就这个方法啊,点Y返回得到一个sales数组,好,那这个地方呢,就要给大家额外介绍一下了啊,介绍什么呢?如果是在实际开发里面啊,你这个数组啊,应该是作为一个sales数组给它返回的,就是说如果实际开发里面,如果让我设计这个方法的话,应该是在这个地方get sales里面呢,直接把这个sales给返回。啊,因为你在读取数据的时候,你处理数据跟读取数据他不应该是一个方法,处理数据呢,应该是由后面的一个用户自己去调用的,他想要怎么处理对不对,咱们这个方法呢,只是给他让他去读啊,让他去读,但我们这里啊是一个测试环境,如果再写一个方法相对比较麻烦,我们这里呢,写一下叫测试。
07:17
方法哎,直接把读取的数据啊,打印到控制台啊。啊,如果。如果是实际开发啊,实际开发啊需要再额外写方法啊,对应处理数据啊,应该是这么来进行操作的,那咱们这个呢,就是直接给它打印出来就可以了啊怎么打印sales.for哎,For里面呢,就会有对应的这个cell,对吧?那这个cell如何打印呢?哎,这个地方啊,需要用一些特殊的手段啊,咱们来标记一下啊叫cell啊,存储数据比较底层啊,它是比较底层的,虽然这个style呢有对应的方法叫get get对吧,你可以读到里面的东西,比方说get value读到里面的,呃,Value值啊,Value值呢,作为一个be数组啊,但这样的话呢,读出来是乱码啊,这样读出来是乱码啊。呃,我们需要呢,使用作者给我们提供的特定的方法叫cell。
08:19
YouTube啊,Cell u里面呢,读这个克隆value啊,克隆value呢,填上这个cell,这时候它还是会返回一个BY数组,但这时候呢,这个BY数组就可以被解析了啊,如何解析一个BY塔数组呢?我们new一个string啊,里面的填上这么一个东西就可以了,这点二返回就得到了。Y6值啊,这样就得到Y6值了,好,那我们呢,因为是一个测试方法,直接把这个Y6值呢,给它打印出来。哎,就可以了,那这样呢,我们读取数据的方法呢,就已经写好了啊,就已经写好了,最后不要忘了关闭。Table啊,关闭table叫table.close。
09:00
对吧,哎,table.close好,最后呢,我们也要对它进行一个简单的哎,这个异常处理啊,呃,这个异常处理里面呢,哎,你如果直接out加一个try catch,它会给你设定一个特有的结构啊,是这么来的啊,你可以不要这个结构啊,你这个结构呢,好像很奇怪啊,我们应该在处理的时候呢,一步给它搞定,对吧,这一行应该也放到里面来。啊,我们在TRY里面呢,一下给它搞定完,如果你这样写结构的话,那这个就没有意义了啊,你不需要先等于一个空值啊,我们直接写下来就可以了,那这个呢,就是读取数据代码的一个编写啊。这个异常应该给它抛出去对吧?好,这是我们完整读取数据的一个代码编写了啊,写完之后呢,理所当然我们来测试一下啊,来到最后。这边来叫。测试读取数据啊,好叫get sales啊,这个读取数据呢,我们就可以去读这个啊,Big data student20。零一对吧,In for name就读它啊,就读它好在读它之前呢,我们给它里面啊,多写几行啊,张三李四。
10:09
啊,李四再复制一下,给他加一个王五。对吧?啊,给他多加几行啊,因为我们之前呢,已经写过一个张三了啊,这时候呢,你可以来看一下啊,里面是有一个张三的,对吧,我刚扫描过,再来扫描一次,它里面呢是有一个张三的,那我们这里呢,再写两个版本的数据,那对应的就是三个版本的数据了,我们这个列族就三个版本啊,那这样的话呢,能把这个,哎里面张三李四王五三个人啊,三兄弟都给他找出来啊,我们对应来运行。好,稍微等一下啊。好,我们经过这个连接创建之后呢,最后我们就可以看到它读出来的数据了啊,它的顺序呢,跟我们正好是反过来的,因为你越后面加入的数据呢,它的版本越高,时间出越大啊,所以拿的是先展示出来啊叫王五李四张三,那这个呢,就是我们读取数据的API编写啊。
我来说两句