00:00
这个呢,我们加一个注释啊,充满电。集合用于存放查询结果数据,对吧,这个呢是返回集合,返回结果集合。好,那接下来呢,我们要去查询,那正常的写JDBC。啊,写GDVC代码的时候要分这个底部啊,首先第一步创建连接,连接传进来的,所以不用我们关心啊,那就是预编译circle啊,然后就赋值,但是这个circle呢,我们从外面传进来也不用去做什么赋值了,所以直接拿着connection点叫pre pile statement,把这个soccer呢放进去看,得到一个prepare statement,那它有异常对吧,它异常怎么办呢?Out加回车。啊,这个异常我们就呃抛一下也行啊,抛一下最后呢,我们统一的去做这个异常的处理嘛,对吧?啊,因为它这个工具类啊,工具类呢,异常我们可以往外抛啊,因为工具类啊,工具类的异常呢,我们一般往往外抛一下,它有什么好处呢?因为你可能调用的人工具类嘛,他可能给很多人用,对吧,A要用工具类,B也要工具类啊,或者说代码的不同的位置,那也很有可能A位置跟B位置对那个异常发生异常之后,处理的方式怎么样不一样,如果你在里边统一处理不合适啊,我可能不一样,那你就抛出去,让谁调用谁处理。
01:32
对吧,啊,通过这种方式啊,那我们就抛一下这个异常,呃,那编译circle正常的呢,应该是去赋值啊,应该就负值,那我们这块呢,嗯,也不负值了,因为这个S呢搞定的,对吧,那就是执行查询。那就。爹。Query。看没得到一个。
02:04
好,那接下来应该是我们解析without了,Without set呢是一个结果集,对吧,我们要去遍利这个without set啊好,那怎么遍利这个维set。啊,而且便利一次我们要创建对象对不对,那就是while without set。点next,好,点next这是便利,那在这里边我们要干什么事,创建这个。泛型对象,创建泛型对象并赋值,并给当前的泛型对象去赋值,对吧,我们要做这个事情好。那首先我们这是一个翻译对象,Class怎么来创建它的一个?对象啊,我们怎么得到T对象啊?
03:03
对吧,第一步创建泛型对象啊,那我们就要写一下创建泛型对象对吧?第二步干什么事呢?给泛型对象赋值啊,属性赋值对吧?第三步将该对象添加至集合对吧?这里边呢,就这三步走好,那他我们怎么去创建这个对象啊。啊,这个泛型大家不熟,我就直接写了,啊,我就直接写了。点new in。得到一个T,那这样呗,我们直接抛一个大的异常出去吧。哎,孙总是了解的对吧,对了啊,那这样的话,我们是不是得到了一个T对象。对吧,得到了一个T的对象,接下来去赋值好大,你看啊,这个result set当中它是不是有很多,你看啊set点。
04:04
嗯,那这个当中呢,可以获取数据吧,比方说这个SET3个列。三个列是不是要跟每一个列都赋值给我们的这个T的对象啊,那很明显,那set你知道这个有几个列吗?我们说了三个,但是未来真正用的时候,这个列的个数确不确定。这个列的个数是不是确定的。这个列的个数他确定吗?对不确定好,那列明确定吗。就是在外面,我们知道,我除了看啊,来这个地方呢,Without set。点get可以传什么传in的类型,也就是说列的位置来做,另外一个呢,可以传列名进来。
05:03
这两个东西在外面,我们这我这写的时候他能确定吗?我能写死说ID name,我能这样写吗。能吗?大家想。不能好,那接下来怎么办呢?他不能我们怎么办呢?反射。好,班长说了反射,呃,班长的意思是要从这个T来获取这个列明。是不是?是这个意思吗?如果是的话,给我回个一好吗?啊好,那比方说我没有写招聘,我这个地方传的是杰森object呢。
06:05
我能不能把我查到的数据封装成阶层object的对象啊?那阶层object当中它有什么列名吗?对吧,既然通用,你不能说一定要有一个招聘啊,对吧,我假如说封装的是杰森object的对象,那不完了吗?没有。哎,对了,又是孙总啊,当然两个孙总不一样啊,上一个new instance是另外一个孙总,这边呢,万达说了。对吧,有原信息方法对了。啊,那我们查询的without set当中,除了有最终的我们get的这个什么in对吧,传一获取值之外,我们还能拿到列信息,从set当中拿到列信息,也就是说这边set。点我们有什么呢?有这个。
07:06
原数据信息啊,那从原数据信息当中,我们就可以获取到谁呢。来看啊,从这个原数据信息当中,我们看到这边可以根据。一个in的值来获取列名对吧?所以呢,我们只需要获取它的列的个数就好了。然后在这边给泛行对象赋值,那肯定是一个负I循环。然后呢,I小于column count count,好,但是这里面有一个问题,什么问题呢?看在my circle不是my circle所有的GDBC这个result set当中,它所有的值啊,都是从一开始变利的,不是注意不是从零,都是从一开始变利的,所以呢,我要把这改为一,把这呢也要加一个一。
08:00
注意两个都要改啊。当然你要不改这你里边所用的都是A加一也可以啊,你不改上面你里边写A加一,那这个地方改了,我从一开始到。看我加一可以吧。因为GDBC里边所有的都是从一开始的,就是假如说你要给它问号,这个呢,预变一所不是问号吗?给问号赋值的时候也是从一开始的,然后取值,注意也是从一开始的。OK吗?对吧,我这变成一把这加一啊,把它加一了,好接下来我们要获取列名,列名刚才看到了,从Meta data当中点get列名,把这个I传进来,看到没得到column name,好,然后还有获取列值。列值的话,那就从我们的result set当中点。
09:01
Get,注意,这个地方只能用object,因为我也不知道什么类型对吧?所以我们用object把I传进来,好,这样的话我们就得到了一个value,得到value,那接下来我们有两个事情要处理呢?第一,这个列明是不是可能下滑线分割的,我们要把它变成什么?头风命名,第二要把这个列跟这个值啊,设置到这个里边对不对。对吧,好,那第一个他啊判断是否需要。转换为叫驼峰命名,那就是if。刚才我们写的叫。Underco to camera,好,如果是true的话,那就需要,对吧?我们要对这个column name呢,重新进行一个赋值啊,对它做一个加工,对当前的column name做一个加工转换,对吧?那接下来还有一个问题,那有了列名,有了列值,如何往泛型对象里面赋值呢?泛型对象它有set get set方法吗?
10:10
他有没有,他没有对吧,所以这两块东西是我们需要去掌握的啊,那这个需要用到工具类,并不需要我们自己去写啊,用工具类就好了,来我们倒一下夹包啊,这个时候呢,我们需要导一个夹包。添加依赖啊,那么第一个是com优com优,它是用来给普通的一个泛型对象赋值,第二个一个瓜娃包,瓜娃依赖,这个瓜娃依赖呢,它是一个谷歌开发的工具包,它里边有非常多的工具可用,那它呢就可以帮助我们实现驼峰命名跟下划线命名方式的互相转换啊,那把它拿过来。
11:03
导到我们这个依赖里边,我还是放到最后啊,新的依赖呢,我都放到最后。好让他倒一下,然后呢,我们这边刷新啊。最好刷新一下。它是有这个工具类可用的啊。我们等的关联完成,可以写我们那个代码了。就差这两步,这两步搞完之后是不是就结束了呀,对吧,那比方说如果说这个搞定之后,将对象添加到集合,那就是result list.add我们的T对象。完了呗。对吧,就差最后这两步了啊,只差最后这两步了。呃,他还在等,我们稍等一下。
12:02
好,这边呢,已经结束了,结束好之后呢,这边我们就可以做一个转换,那转换呢,这个工具类,注意官网下的有一个case format,看是谷歌common base下的。谷歌包下的对吧?啊点那我们是要将下划线命名转化为什么。驼峰命名对不对?好,那这边呢,下滑命名,今天有枚举啊,枚举看见没?好,那我们点进去看一下,呃,那里这个里边呢,这个类里边是一个枚举,可说发枚举类啊,首先它有一个什么呢?中杠小写的,中杠命名的看。两个单词都小写,中间单词中间用中杠对吧?用中杠命名的第二个来看叫小写的下划线。啊,小写的下划线,他这举的例子,C加加里边喜欢这样用,对吧,假如说你要C加加代码对象A跟这个Java连起来开发对象呢,要做个转换,对吧,这是小写的。
13:03
小关键两个都是小写的对吧,那接下来呢,还有一个小写的驼峰,这就正常我们用的第一个单词小写,后面的单词首字母大写。对吧,这叫小头风啊,还有。Apple开大头风,大头风跟小头风区别就是首字母大写。首字母大写对吧,其他后面都一样,还有呢,叫大写的。下划线命名方式对吧,大家所有的词都大写啊,那主要是这些方式,所以呢它都可以转换,那我们用小写的命名方式点干什么呢。我们to,我们to啊转化为case forat,我们要用小头风对吧,我们用小头风,然后呢,这个地方是我们的字符转,你要转什么字符转,你要告诉我对吧,好。转的字符串呢,那必然是column name对吧?点注意啊,为了统一,因为有时候在Phoenix里边我们是大写的,在MYSQL是小写的,所以呢,我先把它变成小写,统一变成小写之后再去转换,对吧?无论你大写小写,我都可以转换为这个通风命名。
14:17
就好了,对吧,好,这样的话我们就做了一个转换啊,当然呢,我们可以做一个测试啊,这边比方说我现在呢,想把一个东西转换一下,Kiss for,点它是小写的下划线命名,我想把它变成一个驼风命名,可以吧,点to kiss form,小驼风啊,我用小通风,然后呢,小写的下划线A_BB。好,注意看啊,我们现在是下划线命名,注意跟前面保持一致,对吧,我们要把它转成小作风来。进行。
15:17
来看啊,我们刚才是不是AA_BB现在转成了什么,小A小A大B小B,是不是把我们的下划线命名,是不是转成了驼峰命名啊,对吧,所以你看杰森object能转换,因为它里边也做了这个事情。啊,人家也是做了这个事情的,所以这一块呢就搞定了,当我们传为处的话,我们就需要做这个事情,对吧?如果是force那就不做了,那就保持原样对吧,你该什么样就什么样就好了,好,那接下来还有一个赋值获取列值对吧,赋值给范型。泛型对象。
16:05
赋值,那这个呢,要用到前面我们第一个这个工具类的come be YouTube啊be,好,那呢,我们用的就是B。并注意看包啊,com.B包啊,点set party来看,这里边呢传三个参数,第一个是并对象,看见没,第二个是name,也就是列名,第三个是列值。啊,然后呢,可以给他设置这个值,无论你什么类型都可以对吧?啊翻译那样可以啊好,那这边呢,写一个T对象是T,列名呢是column name列值呢是value。列值是Y6 OK吗?这块就搞定了,我们用了一个B工具类,给我们泛型对象去赋值。
17:01
啊,给里边去添加这个对应的值。对吧,操作。他这个方法里自动判断的是接次对象还是B对象。嗯,哪个。没没有啊,哪个方法里边。班长说的哪个方法是刚才我们pass object的方法吗?我把这个先截一下啊,我把这个截一下,因为我们代码写完了。啊啊,我懂你的意思了,就是说设置pop还有一个来看啊,就是如果说你你也可以用那个。但这个就不通用了。大家看你对比一下两个有什么区别,一个呢是copy,一个是set。
18:01
对吧,那这个呢,这个更通用一点。更通用一点,它不是判断你是阶段对象还是并对象,他就直接去设置这个值。啊,直接设置值,你可以是一个招聘。啊,他就他就会如果说你是一个普通的一个招聘,他就会去找你这里边有没有这个属性去赋值,但是如果说如果说是copy,如果是拷贝的话,那呃,如果你是杰森。接上那就不行了。他不是说判断不判断,它直接就设置这个值就完了。如果你是招聘啊招,如果你一定未来用的是招聘的话,那其实用这个更保险一点,防止呢,你的列写错了对吧,他就附不上值了啊,一个是copy一个是set啊,一个是copy一个set啊,当然这个我我给他写在这吧。如果说用这个方法啊,呃,你拿到接上object。
19:01
如果说你想把它封装成JS价的,它是没有值的,它是这样子的。啊,无论你有没有查询到数据,它都是长这个样子。啊,都是长这个样子。
我来说两句