00:00
行,那么刚才呢,我们是针对于这个cosmos这个表,还有order这个表,分别呢,我们去实现了查询操作,诶然后里边呢,其实最难的就是我们涉及到的就关于这个结构级的一个处理问题,呃,稍微的简单回顾一下啊,这个关于结构级的处理问题呢,我们需要呢,写这种所谓的虽然是针对于具体的这个表的啊,但是也是一个通用的,因为我们不知道呢,到底用户查的时候呢,需要查几个字段啊,这个问题是不清晰的,所以这块呢,我们就需要呢,借助于啊这个两个技术,其实是啊,第一个呢,叫结果集的原数据,我们需要呢,拿着结果级原原数据来获取两个事儿,第一个呢,就是你到底要查几个字段啊,这个字段呢,也就是我们所谓的这个查询结果及的列数啊,叫column count,另外的话呢,我们,呃,作为Java这个层面,我们是应该以一个对象的方式去呈现查询结果,所以我们就需要呢创建对象,那创建对象的话呢,呃,那对象创建我们希望是一个通用的方式,那就是调用空三的构造器,那接下来你就需要给对应的这个对象的属性去赋值,那赋。
01:00
所以的话呢,这个值当然了,就是你结构集获取到的,这个我们是通过结构集拿到的,那问题就是说我们查询到好几个列值,那我到底跟这个对象的哪一个属性赋值为这个值呢?这时候又遇到一个问题,所以我们就需要呢,能拿到你这个列值啊,是哪一个属性该赋的这个我们就需要拿到你这个列的列的别,呃,这个列的别名。啊,这个咱们也说过了,这个column count呢,哎,Column name呢不靠谱,我们需要呢,用column label来应对类的属性名和表的字段名不一致的问题啊,这个我们就用这个方法,那我能拿到你这个结果集当中显示的那叫列的别名了啊然后这个时候呢,我们就能够通过反射来做,这是我们这里边涉及到的第二个技术,第一个技术呢,叫结构机的原数据,第二个技术呢叫反射,哎结合这两个技术,我们就能够写针对于这一张表的一个通用查询了。那两张表我们这两个也都分别演示一下,呃,其实区别呢不太大,因为最后我们都统一成用的叫get column label了,那通过刚才的这两个类的一个虽然叫演绎是吧,我们就可以试图呢去总结一下怎么写一个通用的啊,在写这个通用之前呢,咱们在针对这个order呢,咱们再稍微的总结一下这块呢,我们画个图诶,方便大家更好的来了解我们这个查询操作,这也是咱们整个这个JDBC当中应该算是最难的一块内容了啊行,咱们就在这来画这个图,那我们就从头来,首先的话呢,我们是在数据库当中有一张表,就是我们这个表。
02:37
嗯,点上这个截图工具。这呢是咱们这张表啊,我把它复制过来放到这行,这个表有了,然后呢,我们现在呢,是希望呢,写一个SQL语句,做一个查询操作,咱们也确实写了,那这是我们要写的一个SQ,写的就是这个。CTRLC。
03:01
有点大啊。嗯,这样的。嗯,这呢,就是我们写的这个搜狗语句里边呢,我们也使用了这叫列的别名了,那查询一下。这呢就是我们查询到的这个叫结果集。嗯,这个我们就放到这儿。嗯,拿到这个叫结果集了,那么这个结果集我们下边要对它进行处理,处理的最终目的呢,就希望把这一行数据封装到我们账号中的一个类的对象当中,这里边呢,我们就提到一个叫OM的一个思想,哎,那我们就把这个类呢,哎先转过来,这个类呢,就是我们这个order类。那我就从这个角度呢,给大家哎粘一下啊,哎这个类呢,我就放到这了,哎在这块我们说有一个哎编程思想在这,哎就是我们说的这叫OM的一个编程思想,诶我们从这拿过来啊把它呢CTRLC。
04:17
那就放到这儿了。啊,有一个这样的一个对应关系,就这个类啊,这个表啊,这个决定了我们这个类呢该如何去创建,或者说你先有类也行,有了类以后呢,我们就知道这个表该怎么去创建了,这有一一对应关系,像这里边呢,关于这个字段跟这个属性这块,这个字段名和属性名没有要求非得是一样的,但是呢,我们说这个字段的数据类型跟咱们这个属性的数据类型,哎,你得是有对应关系,哎像这里边我们是in特型,你这也得是int型,这呢是what类型,这呢就得是string型,这呢是个data型,这个呢就是一个data型,这要有一一对应关系啊,否则的话呢,这个你还得做一个转换,就稍微麻烦一些了,行,这呢是一个OM思想,那我们现在通过搜狗语句呢,查询出一条记录。现在我就希望你把这条记录。
05:03
封装为我们这个类的一个对象。那么我们在这也看到了这个字段名跟我们这个属性名是不一样的,所以在这个里边我们使用了一个叫别名啊,这就我们用的这个别名。嗯,这个给调成它了啊,这个别名,这个别名呢,就决定了我们的这个名。啊,就决定了我们这个名,而这个名呢,就需要他跟我们的这个名保持是一致的。嗯,也就是说,呃,其实我这个线是这样画的啊,但是其实呢,反过来理解的话,就我们这个别名怎么起是由它决定的,嗯,是这样一个问题,行,那下边的话呢,我们说咱们就从这块就过渡到这儿了,咱们叫结果集啊,需要结果,结果集的话呢,具体个方法调用啊,是通过result set来的哈,诶我们这块呢,就拿到一个叫结果集啊,我就在这捡起了哈啊蕊。
06:02
嗯,这个咱们写个全名吧,Result set。嗯,这是一个result set,然后我们实际上是调用这个result set这个对象的点啊,一个next方法。通过调带的方法,我们这个指针就往下移了,咱们现在呢,查询只是查一个对象啊,或者叫返回的是一个对象,所以这块呢,我们就只调的是个if方法,那一会我们写通用的时候呢,可以写成查询这个表中的多条记录啊,比如我们这块叫ID小于,哎,某一个数可能就查出来多条了,那个你把那个if改成个well,其实就可以了。嗯,那这块我们通过这个ne呢,我就定位到下边这一条了,下边这一条以后我们需要针对这个接口机呢,做相关的一些操作,这里边我们就要用到相关的一些诶功能了,呃,咱们直接就写到这儿了啊统一的。啊,涉及到什么问题呢?啊,第一个获取这个列数啊,Int我们叫哎,Column啊这个count,这个呢,咱们是用的这个结果集,我就简写了啊结果集的原数据点get一个,诶,Column,哎,Count。
07:07
这是这个方法。嗯,再稍,诶稍微大一点点啊,这呢是获取我们这个叫列数。这个最好把这个也写一下啊,获取列数。然后那拿到列数的目的呢,是我们得方便知道我该调几次这个,呃,我们这个结果集是吧?呃,结果集呢,我这叫R,嗯,这个上面我写成result set了,这是我就写成result set了。诶,我得通过它呢去get,这个叫object,这个这里边呢,就我们写的一个int型的一个叫index,呃,这index是从一开始的,呃我们相当于这个操作呢,实际上是拿这个一拿这个A和拿这个日期的这样一个操作了,返回的呢,我们也是一个object类型的,诶我们把它称作叫诶column。
08:07
哎,Value,看这是它这个呢,是我们拿到的叫列值。嗯,这个呢,诶,Get object,其实咱们获取到的就是,呃,这个其实从这块儿说也行啊,但这个呢。哎,就用它吧,其实这里边儿每一个都是哈。以它为例吧,这个AA呢,咱们其实就是通过咱们的这个方法的调用获取到的,就是这里边这仨eaa和我们这个日期,哎,都是通过它来获取到的。这一下啊好,这就是get object这个方法拿到的,然后呢,我们还得去获取你上边这几个,诶我们叫列别名了,因为这呢明显是这个别名了,这呢就是我们下一个操作。列的别名这个呢,我们是RSMD结构,就原数据点2GET,哎,Column label,哎这呢还是一个in型的一个index,哎这样获取到的这个列名呢,哎,别名呢,哎,它都是个字符串类型的啊,哎,Column labor,哎这样个情况。
09:20
放到一行上去。那咱们是调到这个方法,然后get column label,这个方法能获取到的呢,就是我们这里边的像每一个字段的这个名字了,嗯,是通过这个方法能拿到的。哎,就这个行,那这块我们就能够去给他做一个封装了,那针对于咱们这个order来讲呢,咱们接下来做的这个事儿呢,就涉及到另外的一个技术,就上面这块呢,涉及到了一个叫结果机的原数据的一个技术,然后呢,还得需要哎,借助反射。啊,然后给,诶我们这个order order,你有一个order这个对象的属性赋值。哎,创建的。
10:03
哎,我给这个,哎方式。在创建的对象。哎的哎指定属性,哎复制诶这个呢,是我们涉及到的另外的一个技术。嗯,那么这个事如何去做啊,这就是咱们这个在代码里边写的这样的几行核心操作了,这个看customer也行,看这order也可以啊,就这里边的这几个事,哎,CTRL一下。这样几行操作,所以我们整个关于这个查询操作里边这个核心内容呢,都在我们这里边体现出来了,诶通过上边这块我们找到了你这个叫column label了,然后呢,具体这个值呢,就是column value这都找到了,然后我们借助于反射把这个结果呢就搞定了,最终的目的呢,就是通过你上边这样一个数据,诶我们最终呢,是生成了一个它的一个对象啊,就这样依次呢,从这样一个过程过来的,然后他俩呢,又有一个OM的一个编程思想的这样的一个关系啊,这就整个我们的一个查询的一个流程啊。
11:10
诶,这就这样个过程,这个过程呢,大家诶把它再捋顺一下,哎,要清楚这个事儿啊好。
我来说两句