00:00
好,咱们接下来啊,来测试返回这个map类型啊。好,这个是咱们这个。14啊,来测试还是这个result type啊,这回咱们要返回map类型,OK吧,好,那我们现在来一个student DAO,来一个select。该14了,对吧,尽量跟这个标号啊,给它看齐啊,好,我们现在查询一个所有啊,让大家注意啊,好,按理来讲咱们是不是应该返回一个map对不对,好,但是呢,这回我要返回一个map类型的集合,你看map它本身是不是就是一种间之对的集合呀,对不对。
01:02
但是呢,我们传统意义上的这个集合是不是list,如果map对象返回过多的话,咱们是不是应该自动形成一个list集合呀?好,我们可以这么认为啊,之前咱们在这个例子里边是不是存的是这个student。这回咱们要返的值。不封装到student里边,封装到map中,OK吧,一个map对象。就是一条记录,OK吧,所以说多个map对象自动形成集合,这与我们之前多个student对象自动形成list集合是一个道理吗?所以说这个泛型咱们应该是什么呢?应该是一个半。OK啊,我先给他写上啊,至于为什么咱们一会再解析它啊,我们先把这个效果先写上啊,啊,这边咱们来个string object,好,我们来一个map list,我现在要把这个集合给它拆开,怎么拆?首先咱们是不是还得for循环把这个list即可变利呢?对不对,把每一个map给它取出来啊。
02:12
哎,Map就跟我们以前便利那个student是一样的,只不过这一次是map对吧啊。Mapist。好,我们拿到了每一个map之后,Map本身又是一个集合,我把里边的键值对给拆出来,给大家看一眼,OK吧,怎么拆map同学们。T。Set本身它是这个set key是无序的,只要不重复就行,是这样吗?来啊。String,咱们来一个set,好,那在这里边咱们是不是还得放循环呢?来便离这个set对吧,好来啊,来一个key。好,通过这个K咱们来取value对不对,这个给它来输出一下这个K,好,然后再来输下Y6 Y6很明显map.get key来取Y6对吧?好啊,每一次遍历完之后啊。
03:17
我们来一个分割符啊,分割符好,这个拆map必须得会啊,呃,至于咱们为什么反这个map,一会再说OK吧,我先把这个sol语句写上,我们先来看一看效果啊。SELECT14,好,这回咱们result type反映个什么呢?反个卖可以吗?来看一看咱们这个别名,同学们。对于这个常用类来讲的话,咱们是不是这个map和哈希map都给我们起好了变码数叫map就行了。对吧,好。
04:05
这回咱们来的是from。表student OK吧,好,我们先来看一看这个效果啊。看看是什么啊,这我做一个这个标识吧,这挺难看的是吧?T,下边咱们来一个value啊。来看看啊,这些值啊,其实啊也拿到了,但是跟我们之前封装到student对象里边不太一样,来看看啊,Key内VALUE6吴亦凡看到没?但它是无序的,对不对?好,ID value6是A01 K是HY6是23,这是不是相当于一条记录啊,啊,这一条记录就是一个map对象看到没?跟我们之前一个student,用student来保存这个啊,数据是一个效果呢,对吧,只不过是用另一种这个map的形式来保存。
05:14
OK吧,好,那么我们来看啊,谁是K,谁是Y6K是不是就是我们所查询得到的这个字段的名称啊?其实咱们查询的这个星代表的就是ID name和age,那么查询出来的T就是ID。Name和。诶是这样吗?真正查询出来的数据就是这个value啊吴亦凡,比如说A01和这个23岁是这样吗?好,我们现在啊,来看一看啊,这个map啊,从这个语法上来讲啊,比较复杂,而且这个map它是如何保存我们查询出来结果的,好来看一看。在我们解析这个map之前呢,我们先把前面的给解析了啊。
06:00
嗯,首先咱们来看一条色。Select,我们现在来一个。ID啊suittor,之前咱们反的一直是这个student对吧,好。From TL student,这个没错吧?好,那么我们现在这个返回的结果,它应该返回的是不是一个list,泛型是student,这个没错吧?好,那么如何去封装这个student的对象了吗?好,我们现在来解析一下啊,好,也就是说当我们执行了。这个SQL语句之后啊,好好通过查询得到的这个结果,这个得到的结果是不是ID name和H啊,对不对,根据我们返回值类型会自动为我们创建。
07:11
出来一个该类型的对象谁呢?Student?S行吗?等于六。Student,但是是我们自己new的吗?不是吧啊,人家不让我们new的S对象创建完之后啊,然后由该对象来把这个值封装起来,是这样吗?好。由该对象啊,将查询的这个啊结果啊给它封装起来。行。来看看啊,咱们第一条记录查询的,来一个s.set ID。A001SET name第一条是不是这个吴亦凡对吧,好set。
08:04
Age是23岁,这个没错吧,是不是查询出来第一条记录啊,好,当查询出来了第二条记录。是不是证明什么呢,咱们是不是返回一个student呢,是不是不够的,对不对,当查询出来第二条记录啊,好,我们根据这个啊返回值类型。好,再一次。好,创建出来。一个这个啊,对象来封装什么呢?第二条记录的值好人家又给你来一个啊,比如说这个我给标识是一个S1 OK吧,好又查询出来第二条记录,第二条记录是不是鹿晗呢,对不对,好人家给我来一个S2。
09:02
OK吧,好,那在这里边呢,咱们来一个A002封装的是。鹿晗,然后什么24岁对不对,好,咱们是不是一共有几条,六条记录对不对,六条记录等等等等等等,然后我们一直查询到第六条,第六条咱们应该是多少呢?S。六啊,这个应该是A006这个蔡徐坤这个多少岁无所谓了,OK吧,好,那么这多条记录啊,这多条这个啊记录。好封装。成为了多个这个student对象,是这样吧,然后呢,咱们这个MY这个系统啊,会自动的。为我们创建出来一个list集合,是这样吗?集合来保存这些对象,好来一个。
10:16
List范型是不是student呀,对不对,At least啊,来一个六出来一个A。A r a list。好,然后将这些纸啊保存起来,Ad对吧。来一。啊,等等等,这是多少。往S2。啊,一直咱们保存到S6,那最终得到的这个结果s list我们直接拿就行了,是这样吗?啊,这是我们之前的这个效果哈,这一次啊,咱们反的是什么呢。Map对吧。
11:05
啊,这回咱们反的是。Weapon。OK吧,好,这回咱们再来看啊,一个道理啊。当执行的SQL语句之后,通过查询得到结果,得到的结果是不是仍然是星ID name和A,这个没问题吧,那根据返回值类型,这回这个类型是什么?Map会给我们创建一个该类型的对象,然后将该对象啊,将查询的这个结果给他,这回不是封装数保存起来啊,对不对。保存起来好,那这回这个操作叫做。Map map来个MAP1行吗?又出来一个map OK吧,好,Map一点什么呢?Put,那put什么呢?你查询出来这个星的这个字段名就是我的KOK吧。
12:07
ID啊,咱保存第一条,第一条是A001,然后name是。吴亦凡啊,然后A就是。23岁这个没问题吧,啊,只不过保存的形式不一样而已,对吧?好,那么当我们查询出来了第二条记录呢。是不是一个道理啊?第二条记录根据返回值类型,再次创建出来一个对象来保存。第二条记录的值是这样吗?那这回就应该是。MAP2,对吧?好,这回是A02 name是鹿晗,AGE24岁,好,这回咱们一律是二了,对吧?
13:06
一共几个map?同学们,哎,一共是六个map啊,一直到咱们的MAP6,是这样吗?好,那最终呢,是不是跟上边一样啊,同学们好多条记录干嘛呢?封装成为了多个什么呢?这回是什么对象?Map对象吗?同学们好啊,多个map对象系统会自动的为我们创建出来一个list集合来保存这些什么呢?Map对象,那你想一想,这回咱们创建的这个集合是不是就是list map呀,对吧,String object,咱们来一个map list6出来。List OK吧,那这回map list点什么?咱们来map一等等等。
14:12
一直到卖。六只不过是保存方式不一样,OK吧,反map也行,OK吧,好诶,那么现在啊,咱们来看一下,使用返回domain方便还是使用返回map方便。那都没方便呢,这太容易比较了,我来一个map,我得双重放循环,而且呢,你看这个list本身是一个集合,里边又包含一个map集合,从这个可读性来讲的话是很差的,是这样吗?所以说接下来我们需要分析的一个问题在于什么呢?好。好,对于。啊,SQ语句查询的这个啊结果啊,我们使用domain来封装这些结果啊,多方便呢。
15:08
那为什么还要使用?Map呢?Map很麻烦呢。为什么?都不至于多标,我们会有很多情况使用map,因为大家注意啊,对于查询的这个结果啊,好有很多情况啊,情况我们使用这个啊。表面啊,Man它封装不了,是这样吗?所以啊,我们会想到使用什么呢?Map来保存结果OK吧,好,例如我们现在来一个例子啊,比如说我现在这个需求啊,需求为。
16:05
我们查询出来什么呢?比如说啊,我们按照这个名字进行分组行吗?啊根据名字分组啊根据。姓名来分组,其实可以根据年龄分组,OK吧,好,我们现在根据姓名分组啊,就查询出来什么呢?好,每一个姓名对应的这个啊数量,例如什么呢?叫吴亦凡的有多少人。多少人OK吧,叫鹿晗的有多少人,你看这种扩展,比如说啊,你要按年龄差的,或者是不是按年龄分组,23岁的有多少人,25岁的有多少人,是这样吗?是不是一个道理啊,行,这个时候语句咱们来写一下啊,同学们。That,咱们查什么,一会说首先咱们from一个什么TL for student的这张表啊,对不对?好首先呢,根据这个需求,咱们一定得分组,对不对,分组怎么说。
17:07
Group group by by by谁,By name,或者是by age,对不对?当我的circle分组了之后,我关键字的后边只能出现什么?聚合函数以及分组字段,我在这儿出现一个内幕可以吗?我出现一个A行吗?不行,是这样吧,好,所以说根据我们现在这个查询条件啊,咱们来看看啊,Group by name,我们要查询出来的这个需求就是什么呢?叫吴亦凡的有多少人,Name逗号来个什么。看看行,哎,吴亦凡多少人,鹿晗多少人,是不是这么一个需求啊,那你看看啊,对于以上查询结果啊,你使用map啊,使用这个domain能。
18:08
封装这个啊,查询结果值吗。不能,为什么?因为do面啊,有什么内幕属性,但是呢,没有什么呢,Count属性是这样吧,哎,导面封装不了,当导面封装不了的时候,我们想到使用什么呢?好,我们使用这个啊,返回这个map啊,一定可以保存查询。得到的结果OK吧,这个将来咱们会出现这种情况。我们到时候得能想到使用这个反map OK吧,好,你就记一点啊,能反倒面咱们就反倒面,因为它简单对不对,反不了短面反谁反map OK啊。
我来说两句