00:00
好,那大家再来看啊,那我们可以把一条数据查询为一个map,那咱们能不能把多条数据查询为一个map呢?然后大家想一下可不可以呢?那咱们下面可以来测试一下,比如说我当前我的方法的返回值,它还是个map,它的键呢是string,然后它的值,然后是of check,好,然后咱们叫做get all user to map,好,然后大家看好,这个时候咱们所实现的功能是来查询所有的与户用户信息,然后为一个map集合,哎,为map集合好,OK,那大家想这个功能能实现的了不?咱们现在来复制,把它放在咱们的映射文件中,OK,然后是一个select的标签,ID要跟方法名一致,那在这咱们是不是要知道咱们要查询出来的数据要转换为啥呀?要转换为map对不对?所以说在这肯定也是map,然后select箱,然后from t_UOK啊。
01:06
行,大家想想好使不好使啊。啊,我们现在咱们的这个SQ去执行完之后,这个结果能不能正常的查询出来呢?大家想一下。啊,你看我们现在咱们的一条数据,因为咱们之前咱们已经写过一个,把一条数据转换为map集合,也就是说我们当前查询出来的一条数据对应的就是一个map,那我们现在查询出来的有几条数据啊,四条数据。对吧,那四条数据的话,大家想想,你把它放在一个map里面,那这个时候它到底存的是哪一条数据呢。啊,这是不是就跟我们之前咱们在讲咱们的这个查询单条数据为实体类类型的时候,是不是应该是一样的效果了。然后我们现在咱们的返回值,它只能接受一条数据,而我们当前查询出来的结果是不是有多条,对不对?好,大家来验证一下啊,我们现在咱们把它然后复制过来,好,然后在这咱们的方法名叫做get all user get or user,然后to map,然后我们现在咱们要使用的方法叫map.get or user to map,好,获取一个map集合,咱们在这直接把这个map集合输出,大家看啊好,现在咱们来一个执行,大家看。
02:25
好,然后大家会发现他直接就报错了。对,为什么没有错?你看这个错大家都认识吧,我们现在查询出来的结果有几条,四条,但是我们当前咱们的返回值,你设置的是一个map集合,大家要知道你的一条数据转换为的就是一个map,对吧?那你这个时候你查询出来的四条数据是不是转换为四个map,那咱们用这个一个map集合的返回值能获取到吗?获取不到啊,所以说报的错是什么?Too many results exception。对吧,好,然后因为什么报错,因为咱们用的还是索select one方法,然后我们只能获取一个结果,或者说是一个难,但是你查询出来的结果有几条啊,有四条,好,然后这个时候咱们应该怎么去做,大家想想这个问题咱们应该怎么处理呀?啊,既然我们的一条数据转换为一个map,那我们现在咱们多条数据,然后。
03:21
是不是要把它给放到一个能够存储map集合的list集合中,大家想想是不是,也就是说这个方法的返回值咱们应该怎么去写啊?你想想咱们之前咱们在查询多条数据转换为一个实体类的时候,你是怎么解决的?咱们说你应该用一个list的集合来存储我们的每一条数据转换为的实体类对象,那我们现在咱们是不是应该也要用一个list集合?来存储我们的每一条数据所转换为的什么,所转换为的map集合。OK吧,好,下面咱们把它的方法的返回值给改一下,然后咱们是map.get or user to map,然后来获得一个list集合,然后下面咱们直接来把这个list给输出啊,大家再来看一下这个效果啊,这个时候它就没有问题了,因为大家要知道一条数据对应的是一个map啊。
04:18
好,大家看一下,这是我们当前的第一个数据,然后这是咱们的第二个数据,这是第三个,然后这是第四个,OK吧,好。那这是我们当前的第一种解决方案。怎么解决用一个能够存储map集合的list集合来作为方法的返回值,好然后当然呢,我们也可以怎么去做,大家注意,咱们在这呢,我把这个方法呀,咱们给它注释掉,然后下面呢,咱们还把它给写成是我们之前的这种方式,然后就get all user to map,大家看好啊,咱们还这样去写好,然后咱们为什么还可以这样去写呢?大家注意,因为map集合里面,大家想想它是不是也可以来存储多条数据啊。
05:03
但是呢,Map跟list不一样,你可以直接把每一条数据转换为的map集合放在list中,但是你能把你能直接把咱们每一条数据转换的map集合放在一个map中吗?不能,为啥map是键值对。咱们查询出来的数据,你可以把它作为值,但是谁作为键呢?好,所以说这个时候大家注意,我们就要用到一个注解了,叫什么注解,叫做map key。叫做map k的注解干啥的?把我们当前查询的数据所转换的map集合,然后给放到一个大的map集合中,然后通过这个注解,咱们可以来设置这个map集合的键,比如说我们把谁作为键呢?大家注意这里面写的是谁,写的是我们当前所查询出来的这个你你所查询出来的这个数据的字段,比如说我们把咱们查询出来的ID来作为这个map的键,好,然后它的值就是我们当前的每一条数据所转换为的map集合,好下面大家再来看把方法的返回值,咱们把这两个给注释掉啊,然后下面呢,咱们在这再来调用这个方法。
06:14
Get ou to map对吧,然后是一个map,然后咱们直接把这个map给输出,大家来看这个效果啊,大家能想象它的长什么样吗?也就是说我们现在呢,咱们可就是可以把咱们查询出来的每一条数据转换的map放在一个大的map中,但是咱们要用一个注解来指定它的键,因为map集合中它不单有值,它还有键呀,我们可以把查询出来的map,把它作为大的map集合的值,但是你一定要去指定一下这个键,然后这个时候咱们就通过我们的这个注解啊,把咱们查询出来的ID字段的值来作为了每一条数据的键,OK吧,好,下面咱们在这再来一个执行,大家看啊。
07:01
好,大家看一下有问题吗?没有问题,你看这是咱们的第一条数据一是键,然后后边这是不是就是我们当前的这一条数据转换的web集合呀,然后这是键,然后这是我们当前转换的map集合,OK吧,好,我把这个复制过来,然后呢,把它给放到我们当前的这个位置,大家注意啊。行,咱们在这呢,给它加上一个多行注释,然后咱们给它换一个行啊,让大家看的更清晰一些啊。好。来换一个行。然后在这再换一个号啊。行,大家注意,这就是我们当前咱们转换之后的一个结果。OK吧,好,所以说大家要注意咱们的这个map key,它是用来干什么的。好,然后在这咱们也可以来给大家去写一下,大家来看一下啊好,然后若咱们查询的数据,若咱们查询的数据,然后有多条是。
08:05
有多条时对吧,好,然后并且啊要将每条数据然后给转换,为什么呀,转换为我们的map集合能看懂吧,好然后此时咱们有几种解决方案,咱们有两种解决方案,首先大家看好咱们的第一种解决方案,怎么来解决,将咱们map接口方法的返回值设置,为什么设置为啊泛型是map的list集合。OK,就像是我们在这儿咱们所设置的这个方法一样,大家注意啊,就像是这个好,这是咱们的第一种方式啊,然后第二种方式,然后这个时候咱们查询出来的结果,咱们在这儿可以给大家复制一下,然后咱们来找到咱们的测试类对吧,然后这个时候查询出来的结果它应该长什么样呢?哎,复制一下。
09:09
好,然后把它给放到咱们的这个接口里面,最终的这个结果呀,最终的这个结果,然后它是长这个样子的,然后逗号后边还有一个数据,大家注意长这个样子,好,然后咱们的第二种解决方案的话,大家来看,然后第二种解决方案怎么办?咱们可以干什么?是通过咱们可以将每条数据,然后转换的什么map集合,然后放在一个大的什么呀,Map集合中大的。啊,Map中好,然后,但是必须要通过什么,要通过咱们的a map key,然后这个注解,这个注解,然后来将查询的某个字段的值,然后作为大的map,大的map的键。
10:10
OK,这个大家注意啊,咱们可以将每条数据转换的map集合放在一个大的map中,然后,但是必须要通过at map key注解,然后将咱们查询的某个字段的值作为大的map的键,好怎么去写,咱们把这个给大家复制过来,然后最终它所查询出来的结果是什么样的呢?然后刚才呢,刚才大家应该也都看了,我在这呢,已经给大家复制过来了啊,咱们直接把这一疙瘩对不对,然后一个复制啊,从这开始复制,一个复制,然后把它给拿过来就行啊,这是我们最终的一个结果,好,然后呢,这两种方式咱们用的哪个比较多呢?大家想一下,我们哪个用的比较多?咱们是第一种方式用的比较多,还是第二种方式用的比较多呢?大家想一下啊,也就是说我们是把每一条数据转换为的map集合放在一个list中用的多,还是把咱们当前查询出来的结果,然后放在一个大的map里面,然后通过注解来指定键用的多呢?其实我们上面咱们的第一种方式用的是比较多的,OK吧,好,这个大家注意啊,当然这两种方式呢,大家都要会,然后呢,我们的a map key这个注解呢,大家也要知道它是干什么的啊,OK,然后这个下去呢,大家可以自己的去试一下,然后我们以后咱们再说一遍,并不是说我们以后查询完数据之后就要转换为实体类嘛,不是,咱们以后好多情况下都是你查询的结果,没有相对应的实体类,这个时候怎么办?咱们就要把它转换为一个map OK吧,好啊。
我来说两句