00:00
就是下面呢,咱写接口,因为在接口里边呢,我们要根据刚才咱看到的三个条件,就是你的统计因子,包括你的开始时间,结束时间三个参数,通过三个参数查数据库,然后返回它想要的这个结构,在结构中有两部分,一问是日期的数组,一问是你的这个数据的数组,那咱们最后把这个我们就来做到。咱们写下这个接口啊,我们来实践。这些我先关掉啊,然后来到这个sta这个里边,咱们第一个生成数据,然后写第二个,第二个就是图表显示,然后返回啊,我们有两部分数据,一问是你的日期的这个A的数组。然后第二部分是我们那个数据的或者数量的Jason的数组,把这两组返回,也是咱们看到的。这部分还有这部分啊,那怎么做?下面写方法啊,在方法中,比如说我写一个get提交啊,因为就是查询,在get提交中,我们给它起个名字,显示数据,我就叫收it,显示数据在后面咱有三个参数,但是三个参数咱可以传对象啊,我就专门传三个值的,因为咱只有三个值嘛,传个对象也一样的啊,我就这么传了。
01:22
第一个值是在那个统计因子,我就叫这个type,就是你是注册人数,登录人数还是什么人数啊,这是第一个,第二个是我们的开始时间比记第三个结束时间and咱们三个参数,然后写完之后下面写方法,写个PAR方法名字我就叫收date。然后在方法里边把S参数咱们快速得到,还是用这个注解啊,咱们得到一下第一个type。同因子,然后第二个这个叫比例。第三个and结束时间啊,咱们有三个值,这个得到了,然后得到之后,下面咱就调survey中的方法,把这个根据条件查出来,给它做个显示。
02:08
那我来调一下啊,这个方法比如就叫get头收。Date。在里边把三个条件值传进去啊,就是一个type begin啊,然后这个方法要返回什么呢。给大家说明一下啊,各位注意啊,因为咱们现在要反映数据是不是有两部分数据,一个是日期。一个是什么,是不是这个数量,所以我们之前说过啊,就是咱们如果说你返回多个数据,咱为了取值方便,咱一般建议给他写个什么结构。是不是一个map结构,因为map是不是有k value,但是你不访问map也可以值map,你取值更加方便一点,所以咱们现在给他还是把一个map集合,让map中有你的日期,还有你的这个数量,这个啊,咱们写个map集合。
03:00
Map,然后map里边key就是这个street value,咱来一个object,它更通用,这个叫map这个啊,咱写的这个返围结构,然后写完之后把这结构最终做个return,就写一个瑞return r.OK点上date里边成map,这样的话把这个CTRL的部分我们就写出来了,然后写完之后咱下面写它那个service,在service里边做这个最终过程。那咱们来实现一下哈,写。那我先创建啊。这个方法,这是service中,然后写它的实现类,在实现类中把这方法最终写出来。就是这里啊,那这方法我们要怎么做,咱们先做一个快速分析,然后写一下啊,首先第一个咱们是不是要查出数据,所以说咱们就可以根据这些条件把数据查出来,是不是就可以了,这就是第一个啊,就是你什么条件,那我就查出数据,然后查出数据之后把数据按照咱的结构做个封装就可以做到,那咱们来写一下啊,先做一个查询。
04:11
我们来查一下啊,因为条件是有三个啊,据说是两个,这是你显示的那种那条件,而用咱们之前的方式query rapper,我们加一个叫这个应该叫ced daily。啊,然后加一个叫rapper。等于new上一个rapper,然后rapper里边设置它那个条件。各位注意啊,它的条件是不是就是开始和接入时间呀,也就是说你现在要大于开始时间,是不是要小接入时间,或者说大于等于开始时间,小于等于是不是结束时间就可以做到,那怎么来写呢?给大家说一下啊。咱们在之前应该是我们项目第一天讲到过买贝塔普通知识,如果你是大于等于,是不是写这方法,第一小于等于Le嘛,这么写可以,但是咱们还是要一个方法。
05:05
不知各位是否记得啊,第一个方法。大家看一下这是什么?吞比吞什么意思?在你的范围,就是这个范围中是大于第一个值,小于第二个值,就大于等于第一个值,小于等于第二个值啊,所以咱现在用个比between也可以做到,或者说你用gele也是一样的,那我就换一种写法,换个比between。然后在比特里边,咱要查询我这个日期范围的值,各位注意啊,不要写错,咱的日期应该是这个字段,因为咱们存的按照它进行存储,那我们就查这个字段,Date这个字段。把它拿回来,然后里边加上你这个开始时间,比begin还有结束时间,按这样的话,根据条件把数据可以查出来,然后查出来之后咱们调用那个方法,就是base map里面的方法,我们就select list,把rapper传进去,最终返回到。
06:00
就咱这结果啊,就是这个,比如叫这个ta list。这个咱就查出来了啊,这是我们写的这么一个查询条件的这么一个方法啊,但是这过程中呢,就是咱这么写没有问题,但是我想给他写的就是更精准一点,或者说更完善一点。什么意思呢?大家看这个值。这是不是叫type,而这是什么意思呢?就是咱们现在要选择你是查询登录人数还是注册人数,还是这个播放数量,比如我现在选择登录人数,那咱查的话,我是不是只需要把登录数量查出来可以了,别的数量我是不需要你查,没有错,但是没这个必要,所以大家给他查的更精准一点,那怎么查?给各位说一下啊,咱之前在这个买中还学过一个方法。这个方法。我说各位是否记得啊,赖的方法,赖什么意思啊,指定你查询的列,那我们就指定一下啊,第一列咱要查的肯定有这个日期,这肯定是必须的,那这个我复制就是先查一个日期。
07:10
然后第二个查什么,就是要查一下你是选择是登录还是注册,还是什么播放,那这怎么传。各位看到啊,在我写这个下拉列表中有个Y6值,你注意Y6值和我这个字段名字。各位仔细看是不是一样啊,Log in什么video跟它是不是一样,也就是说咱们传这个type就是这个纸,这个纸就是咱的字段,所以这位置我可以写个type,那把它就查出来,所以现在查的话,第一个日期,第二个你是选择哪个是登录就查登录字段,是注册就查注册字段,这么查肯定是更精准啊,就是你要什么我就给你什么,不要的我就不给你,因为咱们肯定是最精准的匹配,把这个查出来啊,这是我们的第一部分啊。这个咱们写出来了,我加个注释。
08:02
根据条件查询你对应的那个数据,这个完成了啊,然后完成之后呢,下面咱们把数据给他就做一下封装啊,那咱说一下这个该怎么封装。这给大家讲解一下啊,咱说这个特点啊,就是第一个,因为呢,咱们返回的有两部分数据。哪两部分,一个是日期,还有一个是你日期对应的那个数量,比如我现在日期有这个3月3号,3月5号,3月9号,我想查注册,那3月3号对应十,3月5号对应40 3月9号是不是对应三,这叫日期和日期对应的数量,那这个咱该怎么给它封装呢?注意啊,这里强调,因为咱们现在在我前端要求是一个数组的一个A层的一个结构啊,要是数组所咱后端就要把这个结构变成一个Jason的数组结构,那这该怎么变?
09:04
希望各位要知道啊,给大家也是快速说一下啊,就是这个过程啊,简单画个图。咱之前解释过啊,我们的Jason数据只在前端才叫Jason,在后端他们都叫字符串,所以在提单中Jason应该是有两种形式,一个叫Jason的对象啊,就是大括号这种形式叫对象,比如说简单写一个,假如说这种形式啊。比如里边第一个我们就叫name,然后这个叫。Lucy,第二个比如叫age,然后这个值叫20,这个叫Jason对象,然后还有一种形式叫Jason数组,就是咱们现在要一种形式,这种形式比如里边有一有二有三,或者说在里边数组中是个字符串,比如说AA,这个BB。比这个叫CC啊,就是这种形式啊,所以这个是A的两种形式,一个是对象,一个是数组,但是咱们现在要求反而是一个数组形式,注意啊,这问是前端的叫法,它叫前端中是对象数组,咱后端都叫字符串。
10:11
那大家考虑这么一个问题啊,你说在咱们的Java代码这个过程中,就是咱的后端Java代码中,我们什么形式会变成Jason的数组结构?什么会变成数独?希望各位要知道啊,因为咱们后端结构外呼几种形式,要么字符串,要么对象是不是要么集合呀,得给大家强调,咱们后端什么变常数组,就是你的这种形式。什么形式?例子集合它会变成Jason的数组形式,比如说我这里边建个list子集合,用JA转换,它就会变成Jason的数字形式啊,这是我们的一个特点,所以大家把这记住啊,而你在后端,比如是一个这种对象,假如一个优侧对象,它就会变成Jason的对象形式,或者说你的map也会变成一个Jason对象形式啊,它是这种结构,List集合会变成JA次数组,你的对象或者ma集后会变成Jason的对象格式。
11:10
是这个特点啊,就是咱们下面按照这种结构我们做封装,那怎么来做呢?回到我们这个代码中来啊,咱们现在是不是有两部分数据啊,那咱怎么做两份数据,我是不是就可以建两个粒子集合呀,一个代表日期的,一个代表数量的,然后咱们向日期中放你日期数据,向数量中放数量数据,最终把它们都放到map机构中做个返回,是不是可以做到,所以咱们现在这种形式用到的就这个结构,咱们建两个历子集合,一个代表日期,一个代表数量,然后向里面放数据,最终都放到麦克中返回,就会变成咱们想要这种格式,因为list集合会变成数组形式。啊,这个啊,咱做一个说明,那我在里边写一下啊。
12:01
就着这个来写啊,因为前端要求是数组的对称结构,它对应咱们的后端Java代码中啊,代码是一个例子集合,所以咱们怎么做呢?我们现在有创建两个历子集合,一个是日期的历子。一个是那个数量的例子的,然后咱们进行封装啊,那咱们来把两个创建出来,我来写一下啊,第一个来一个例子,比如咱是一个那个日期啊,我就来一个这个缀啊日期。用这个类型啊,然后日期给它起个名字,比如日期的名字,我就叫这个名字啊,就是它。被这个list等于new上这么一个a list,把这个创建啊,这代表日期,然后再创一个list集合,代表咱这个数量。数量呢,咱就来一个int,这是数量啊,那数量给它起个名字,比如我们叫这个,呃,就是um。
13:04
这个。Date。例子。啊,这代表我们的数量啊,扭上一个叫a release,把这两个创建,这是我们做的这个步骤啊,然后做完之后,咱下面把数据向量里边封装就可以了,最后放到map中。当然各位看到咱现在数据是不是在这里面啊,这虽然也是粒子集合,但是它变的数据肯定不是我们想的结构,因为咱要想要两问结构,你这个变。它做不到这种结构,所以咱们怎么做呢?我们就需要把咱们查出的集合便利,然后给它向这两里边分别放他想要的数据,最终给他返回就可以做到啊,那这是我们最终做法啊。我写一下啊。就是便利查询出来那个所有数据的。一次集合,然后进行这么一个封装,那咱来便利啊。Ta list。
14:01
做一个便利。便利之后呢,我们现在可以在便利之后得到里边的每个这个就是。这个对象啊,得到每一个,那我来一个s list.get I。这是得到每一个好,就叫这个就叫daily了啊,然后得到每一个之后,咱下面开始做这封装,首先我们先封装这个日期的第四集合,也就是把这个数据放到日期集合中,日期集合是它,那就向里边放数据可以了。怎么向历史中放数据?用这个方法。A的嘛,然后咱通过这个叫daily。啊,写到这里啊,Daily里点上get这个日期,这样的话我们在操作在集合中是不是有你当前这个查出日期,就是满足这个条件中的日期都放到这个机构中去,这个就完成了啊,然后完成之后下面咱们再来封装它那个数量部分。
15:01
啊,封装对应的数量,那数量怎么做呢?咱是放到这个机构中,叫number date list,向里边放出去,这些数据也是从代理中取。但是目前有个问题啊,大家注意啊,你看数据啊,我有课程数量,有登录,有注册,有视频,那我要取哪个。是不是这不一定啊,如果说你现在要查询注册,我就去注册,我查登录就去登录,我查课程就去课程,但是目前我要去那个是不是不一定哦,所以这个怎么做。是不是咱们要做个判断啊,那咱们这里边需要判断我再说一遍啊,日期嘛,也是固定的,咱们日期就是那几个日期,但是你这个具体的数量,因为咱们在查的话,我可能查登录,也可能查注册,也可能查这个课程播放量,而每个部分的数量是不是都不一样啊,所以咱要判断,看你到底要查哪个,那咱就封装哪个数据,假如我查登录就封装登录,我查注册就封装注册啊,咱需要做个判断。
16:06
那怎么判断,给大家写一下啊,方式多种方式。因为我现在type是不是你的值啊,那根据type咱们可以做个判断,就是我可以写个if判断,但我给大家还是换一种写法啊,来这么来写。这个不知各位是否记得啊,就是Switch这个语句,咱通过Switch做过判断。我把结构写一下,根据type,结构中就加一个叫case。然后里边加你的值啊,然后再加一个冒号,冒号后面加一个叫。不,这。这个啊,然后下面还有一个叫case。加上一个冒号,再加一个叫。这个啊,然后最后就是都选完之后,咱要加一个叫default。然后最后再加一个叫。啊,就是这么一个结构啊,这要各位给他知道啊,应该是我们学基础时候学到的就是一个Switch case,一个结构,咱现在就用它来把我们这个做一个判断啊,那咱来判断一下啊,首先第一个type,就是如果说你的type是这个值叫log in am是它,那就表示目前咱取的是登录,那我现在就向这个数量的集合中,咱来封装那个登录的那个数据。
17:27
啊,那我来个A,叫这个a.get log in。这也不知道各位是否能看懂啊,因为咱们tab中通过下牙列表传的这个值,通过它直接判断,如果你是捞印am,就是里边的这个值,咱要给它封装登录这个数据啊,下面都一样,我快速改一下啊,第二个如果说你是一个注册。是这个。那我们就封装这个注册的这个数量,点A叫a.get于M啊,这是第二个,然后里边还有第三啊,第三个就是这个纸,就是那个视频播放数量跟他写法一样。
18:06
呃,我用它就复制啊,咱改一下也都差不多,第三个第四个第三个只是这个video wave。就那个视频那里边,我们就给它得到那个视频的这个数量。啊,第三个,然后还有第四个,第四个是这个课程数量。把这个复制,那我们得到就是这个课程get。Cos m这样的话得到了,如果是default,那咱直接给它加个啊,所以这个就完成了这么一个封装,咱是按照这个过程做到了。这个啊,我们就写到这里啊,然后咱们把这些看一下啊,最终给它再返回,就是现在我们的做法就是因为在前端它要求咱们返回是两个Jason数组,一个是日期,一个是数量,因为你返回别的格式它不认识,它只认这两种格式,你只有这么返回它才能显示,所以咱们必须要这么来做,那怎么做呢?因为Jason数组在咱们Java端对应的是例子集合,所以我就建了两个例子集,可一个代表日期,一个代表数量,然后咱们把咱们的查出数据做个便历,先封装日期,再封装数量,但是因为这个数量呢,咱要取哪个数量不一定,所以咱做了判断,如果你是这个登录就去登录的,你是注册就去注册的,用这个咱给他判断出来,然后最终咱们便利之后,在这两个例子结构中会有咱们对应的数据里边应该都存在了。
19:38
这个啊,我们就做到了,然后做到之后呢,咱把两个数据用这个map集合做个返回,那咱给他返回一下啊,我就留一个叫。哈希迈普。然后把两数据放到咱的map中啊,那我们来写一下啊,第一个数据这个就是你那个日期的部分。Date这个list啊,日期,然后还有第二个数据map.put是在那个数量的数据,我的数量叫date list。
20:10
把这个咱给他。写过来啊,就最终通过map做了封装,然后咱们把做个re退就可以了,这样的话把这个我们就最终完成了啊,这是我们写的这么一个过程啊。我写一下啊,把我们封装。之后的两个历次集合。放到这个map集合中,然后进行这么一个返回,最终在这里边有咱们想要的这么一个结果啊,所以这是一个封装的过程,各位把这个给它好好去看一看啊,因为咱们现在重点其实就是写这个封装,就是根据你前端要的格式,我们给它返回对应数据,前端要什么我就给它返什么,因为前端要的是两个数组,所以咱们按这种方式封装两个例子集合,把这个通过map返回,然后前端中根据map的key把这值取道,在那做个便利啊,包括等做个显示就可以了。
21:07
这个啊,就关于我们写的这么一个借口部分。咱们把它就做到了啊,然后这个你记住啊,我们list集合对应的是这数组你的对象,或者你的map集合对应的是Jason的对象形式,咱用这种特点把这个做到了啊。啊,所以咱们完成了啊。这张图我先保存一下啊,然后最后再来把前端一个调用过程给它做到。啊,这是项目整合一。它这个页面部分啊,然后刚才咱们是那个介绍部分,我在图上画了啊,代码中我们都写出来了。
我来说两句