00:00
好,那我们呢,继续看第五个例子。第五个例子呢,是这样的。呃,是组装select语句,有的时候呢,我们在执行查询的时候,前端啊,并不需要所有的数据库表当中的数据呢被展示出来,比如说我们有这样的一个需求,就是前端呢,只想展示用户的名字和年龄,然后其他的这些信息呢,具体的信息我在查看用户详情的时候,你再给我展示就可以了,所以呢,那我们一般情况下呢,可能呃,如果数据库当中的列过多的话,就没有必要把所有的数据都返回给前端,因为这样的话呢,用户如果是比如说是手机端用户的话,他拿到的数据量过大的话,他也比较耗费流量是不是?所以我们怎么才能够优化我们的应用程序呢?就是前端要什么我们就给它组装什么,那这样的话呢,我们就只组装两个字段就可以了,比如说name和age啊,那所以呢,我们写这样的一个例子,就是查询所有用户的用户名和年龄啊好,TEST5。
01:20
好,那么怎么样才能做到查询指定的列呢?我们在我们的query rapper当中还是这个query rapper啊,我们呢可以去组装我们的select语句,所以呢,我们这样写query rapper。点select。嗯,然后呢,我们查的是username。以及。Age对吧,就差这两个列啊,然后接下来呢,我们先来用我们传统的这个user map.select list啊,它可以接收这个query rapper,我们先来查一下看看,好,那这样的话呢,我们会得到一个user,然后呢,把这个users呢给它输出出来。
02:06
好,接下来呢,我们来看。好,大家看啊,我们查询的时候是没有问题的,查询出两个列,并且得到的呢,确实也是我们的用户名和年龄这两个列,但是做对象封装的时候就出现问题了啊,我们不需要的列也都一并给我们封装出来了,为什么呢?因为我们选用的这个方法叫做select list,它的返回值就是user。啊,如果是这样的话呢,它就是根据上面的这个查询结果,把查询出来的结果呢,封装到users里面所包含的user对象的每一个属性当中,当然user对象它不单单只包含这两个属性,它还包含其他的属性,所以其他的属性呢,就使用了默认值,那最终我们组装出来的结果是这样。
03:05
其实就违背了我们的初衷了,我们并不想组装其他的字段,那所以呢。和我们的select语句更搭配的呢,实际上是另外的一个啊,我们再重新写一下,叫做user map.select。Maps。它呢可以查询出来一个建值队的结果,而这个建值队的结果呢,会根据上面的搜QL语句当中组装的这样的一个列名来动态的去决定建职队里都有什么,所以呢,我们把query rapper给他传进去,然后同样我们得到的结果,大家看这个泛型,它其实呢,就不是一个什么呀,不是一个user泛型了,而是一个map泛型,然后map泛型里面呢,有兼职,对,因为我们的user对象里面啊,查询的一个是username,一个是age,他俩的数据类型不一样,所以呢,后面的这个值呢,是object类型的啊,然后呢,接下来呢,我们就把这个呃结果给它打印出来,所以呢就是maps.for each啊,我把它打印一下,然后接下来呢,我们右键运行。
04:18
好,大家看最后我们封装出来的这个结果是不是就是脉部集合的形式了啊,一些多余的呃,值为nu的字段就没有被封装出来,那这样的话,我们把这个结果返回给前端,才是前端真正需要的,好,这个呢,是我们所说的select语句和select maps,通常他们两个。呃,更搭配是不是啊,好组装。Sir。Leg。语句啊,然后select语句通常会和select maps一起使用。Select。
05:00
语句。通常会和。Select。Maps。一起出现。好,那这是我们的第五个例子。
我来说两句