00:00
咱再说一下E分类怎封装,因为现在呢,我们查出来一分类是这个集合里边的泛型是edu subject,但是现在呢,我们要返回到泛型不是edu subject,是这个one subject,这一单做法就是我们就需要把这个集合就是list,然后里边是e subject集合转换成list,里边是y subject,这个集合做一个即可转换,把这个集合变成这样。那我们怎么做呢?给大家注意。因为这个e subject中这值都有,里边肯定有ID名称,所以咱们做法就是没有特别的方式,做法就是把查出来这个集合做个便利,便利之后呢,得到里边的每个1SUBJECT,然后把值取出来放到one subject中,最终放成这个集合,这就是一分类,把它变利,我们做封装。然后下面把这个代码我们来写一下啊,先把一分类分上之后,然后咱们最后再来分上那个二级分类,二级分类跟一分类差不多,咱先写一一分类这个分程过程。
01:10
那我们下面啊,咱就写这么一个便利代码,最终实现。我来写一下啊,这位置我就写这么一个就是啊,它叫做y subject例子,用它我们做一个便利,我就写一个负循环了,就是普通负循环便利I等于零,I小于它,点SI加加,这是一个便利。啊,这是里边的这部分啊,便利这个one subject。例子这个集合,然后便利之后怎么做呢?咱就可以得到我这个one例中的每个这个edu subject的这个对象。把这得到,那我们来得到一下啊,就是one subject list,点上一个叫get加个I,这得到就是里边的每个对象,比如就叫这个edu subject,这个得到了啊,然后得到之后我们下面怎么做呢?因为大家注意啊。
02:11
这两结合中的对象不一样,最它做法就是把这个e Du subject的对象中的值是不是给它放到万subject中去,然后放完之后把one subject再给它放到这个机构中去啊,就是这个过程我写一下啊。做法就是咱们把这个edu subject。它里边的那个值。获取出来,然后。啊,获取出来干什么呢?放到我们这个叫one subject这个对象里边去,然后都发之后,因为这里边是一个循环嘛,最终肯定会有多个oneself,咱把最终封装完之后,那个多个oneself给它,最终在。放到我们那个就是final subject list里边去,主要就这过程就是做一个两个集合中的转换,你把一个便利把值取出来,再放到另一个集合中去啊,主要这个过程,那咱们来把这个我们来写一下啊,但是做法咱先写一种复杂点写法,因为咱写一种比较简单方式,因为这个过程中呢,有个工具类可以做到啊,我先写的复杂点啊,那怎么做呢?因为咱要放到one subject中,最后把one subject咱先new上这么一个对象叫one subject,等于new上一个one subject。
03:36
然后拧完之后往里边放数据,怎么放呢?就是用这个set,因为它需要就是目前这两个书准一会写啊,一个ID一个title,那我先放IDID在哪里呢?在edu subject中我们给它取下叫。Get ID,然后取完之后向y subject中再放第二个叫这个title,从edu中取出来这个title,这样的话就放完了,然后它里边会有多个这个one subject都放完之后,咱把这个one subject放到咱这个叫final subject中去。
04:15
给他一放。这样的话就可以了,这是我们的这种写法,把这取出来放到它里面去,最终再放到例子中,例子集合,然后你都发完之后,在例中有咱们最终这个所有的一级分类。这个啊,是我们的这么一个基本写法,咱们可以这么来做。但是这种写法,这么写没有问题,只说这么写啊要稍微麻烦点,因为我们现在呢,只有两个值,一个ID,一个开头,这么写没有错,但是假如说里边你有更多的值,比如说你有十个,有20个,这么写肯定不方便,你还需要set在get头,所以针对这种情况下,咱用一种简写的方式,它的效果跟这个一样,只是把这过程给咱做了一个封装,那咱给他写的简化一点啊。
05:05
怎么做,我来说一下啊,效果都一样,只有一个工具类,这工具类呢叫这个名字。希望各位记住啊,注意别导错,包是里边的叫BU是润包中的啊。大家找到它就是在B里边呢,有一个方法。这个方法。这个方法很好记啊,叫copy properties这个方法咱用它来做一个实现。这各位记住啊,咱后面都直接用它了,然后这个过程跟它一样,是什么意思呢?就是你把一个对象中的值复制到另一个对象中去,就是把一个对象值取出来,Get出来,再塞到另一个里边去,咱们现在就这么来做,那这个怎么写,给大家来写一下啊。各位注意啊,咱现在做法就是是不是要把edu中的值放到y subject中去,那做法就是第一个值你传个edu。
06:03
第二个值传一到y subject,然后你这么写之后,它会怎么做,把edo中的值给你get出来,在set到Y里边去,跟这个代码是一样的,只是说我们现在用b unit可以做个简化,两个代码效果是相同的,咱用一行代码能实现出这个多行的效果。啊,所以现在我们就这么来做,各位把这个记住啊,BU就是你把一个对象中的值给它get出来,带set到另一个对象中去,然后它的参数怎么传,这是你就是get出来那个对象,这是set那个对象就是咱们到这种形式,然后最后你把set进行那个对象给它放到。例子中去,这样的话就可以了啊,所以咱们按照这个过程完成了一级分类,这个封装就是这么来做啊,最终封装进去。我写个百注释拿到下面来啊。
07:01
给它就放进去啊,然后都放完之后,我们先做个测试,看目前什么效果,咱先把这个final例给他返回看目前的结果,目前如果效果正确的话,在里边呢,应该有最后的E分类,然后它目前二级分类应该为空,咱一块儿再来封装。啊,这是啊,我们写到对不对代码。然后洗完之后咱们来做个测试啊,一会儿我会再总结一遍啊。来测试一下啊。把这个edu我们给它启动起来。系统之后我们还是打开swag,最终给他做一个测试,用swag咱测试一下它这个最终的结果啊。在等的,先启动一下啊。啊,这里边啊,应该已经启动了,然后咱们打开swag,就是这个local house,这里边我们用的该是8001801端口啊,用这个改一下啊,8001加上swag swag是这个叫swag。
08:08
杠u.HTL这个黑车。然后咱们找到方法,在subject里边,刚才写的方法,这个方法,那我现在把这个方法执行直接点这个叫try it out,在这个CTRL里边,这咱们应该也做了返回,把这值都给它回来了。那咱们看一下啊,我一点。各位看这个结果啊,咱们仔细来看这结果啊,前面都是那些具体固定那些数据,然后你看例子是我起的名字叫list,在list里边是咱们最终的数据,目前是这个数据,第一个咱对照它要求数据,这数据是个数组,咱们数据。是不是一个数组,然后数组里边有多个对象,我这里边也是有多个对象,咱目前是有三个对象,然后在每个对象中都有这部分。
09:03
这部分大家清楚看到,前端开发,后端开发,数据库开发,这部分是不是就是一级分类,所以你看到啊,目前我们这么一做,在这个返回数据中,把所有一级分类里边是不是都有了,而你看这里边还有个秋准,目前是空,秋准里面要放的是不是这个一级下边的二级,比如前端下边的二级,后端下面二级,数据库下边的二级,这咱们马上要做到目前这种结构啊,一级分类就完成了。所以各位知道刚才我这个过程。咱们就写出来了啊,也就是把你查出来一分类便利便利之后得到值,再放到另外这个机构中去,因为咱返回到不是查出这个泛型,是这个叫one。最终这个结果,在这过程中,我们原始方式你可以get带set进去,但是咱先不需要这么写,用个工具类叫BU可以做到,这是你就是get出,就是你要取的那个对象,Get对象,这是你最终set那个对象,就是把这个对象的值复制到这个对象中去。
10:12
啊,就是这个代码我去写一下啊,这它的作用就是把edu subject中那个值。复制到对应的那个叫y subject这个对象里面去,主要做这个过程,然后这里边有这么一个细节给大家也说一下啊,你注意看啊,在我们的edu中是不是有很多属性,很多值啊,但是我在one subject中是不是只有两个值,所以它会怎么做呢?找到对应的那个属性,比如说你看这里边有ID,有title,它找到ID title做封装,如果这里边有,比如有so,它有什么,里边没有,那就不做封装,找到对应的值就给你进行封装。主要啊,这是。一级分类,我们就完成了这么一个过程啊。
11:01
所以各位也都知道啊,然后这个做到之后,下面再来封装它那个二级分类过程,那咱看怎么做啊,还是看这个结构,你注意第一个二级分类它在哪里。是不是在你的每个一级分类中啊,它不是单独存在,是每个一级分类中有二级分类,所以咱刚才写的这个目的就是为了里边存二级分类,那咱代码中要怎么做,给大家写一下啊,你注意看啊,这个循环是不是循环一级分类啊,而二级分类咱怎么做?因为它也是一个集合,所以咱二级分类也要循环,但是二级分类循环你需要在。一级分类中进行,就是写一个嵌套做循环,因为二级分类要在某个一级分类中,你不能写到外边,写外边他们要封装,所以咱在里边做封装,就是在我的那个一级分类的循环里边。我们来便利。
12:01
查询出来的所有的二级分类,把这个我们来做到,那咱来写一下啊,因为二级分类呢,也有多个值,所以我在里边也是先创建一个例子集合。封装我们那个就是每个一级分类,那个二级分类啊,先来个集合,为了咱方便,那这里边我写个例子,加上一个二级分类,就是to。这个名字我就叫这个兔。呃,就叫to final啊,区分一下。Final。Subject这个list等于我们就是new上一个叫a list,把这个先创建,为了咱一会儿封装方便啊,这是一个创建,然后创建之后按照我刚才说的,现在咱就开始遍历这个二级分类,这个历次集合。
13:00
把它做便利,但是你便利需要写到for循环里边,咱加个嵌套负循环,因为他们有这么一个层级关系。那我把这个拿过来,它叫to subject list啊,咱做个循环啊,咱用for each这些都可以,我是习惯用这个啊,这么看更清晰,在里边为了区分这个名字改一下,比如我叫M。这个各位注意啊,你外边循环的变量叫I,里边不能叫I,咱换个名字叫M,要不然它会有冲突,然后这个变率之后,下面操作咱就是获取我们的每个二级分类,获取一下,我写一个叫to啊,To subject例子。点上盖头,注意啊,别写错,别写I也是当前的名字叫M。这各位要特别注意啊,因为之前班上这个问题会经常有同学都遇到,他会怎么写呢?里边写个I,最终发现分了之后有很多重复的,因为I用的是这个变量。
14:01
你现在用的应该是M,这注意啊,不能写错,在这个位置改个名字,我就叫这个to。Subject啊,这是我们查出来那个二级分类就做到了,而查出来之后,咱现在要把它封装到这里面去。呃,这名字为了区分改一下啊,我就叫t subject,然后各位误会啊,这是二级分类,咱现在要把这个对象,不然到这里面去,那怎么做呢?给各位强调啊。因为现在呢,我查的是所有二级分类,你不能直接封装,咱需要做个判断,就是你要判断二级分类,它是属于哪个一分类,因为咱有一级有二级,必须必须要做个判断,判断二级属于哪个一级,那怎么判断呢?咱看这个结构中啊,这里清楚的告诉我们。二级分类的part ID是不是就是一级分类的ID啊,如果说这两个相同,那这个是不是就是它下面二级分类,所以咱根据它这个判断,也就是二级分类的派ID,如果和一级分类的ID值一样,那就放到一级分类下面去啊,就来做这个事情。
15:14
所以这个位置咱需要做个判断,因为这是所有二级分类。小这个位置啊,判断二级分类那个parent ID和一级分类的ID是否一样,如果一样的话,咱做封装,那我们来判断一下啊,就加个if。按照这里写到的二级分类,就是它那刚取到它里边的parent ID,就是get parent ID,点上equals一级分类的ID来看一级分类啊,一级分类应该就在上边,就是这一分类啊,你用它用它都可以,我就用这个原始的edu了,包括用这个Y也一样的。那咱用它取下里边那个ID。
16:00
这是一个判断。我说各位是否能看懂啊,就是判断你这两只是否一样,你只有一样它们才能建立关系,你不一样它们没有关系,那我现在判断,如果说他们一样的话,那我们就再把这对象放到机构中去啊,再给他放,放的方式跟刚才这写法一样。啊,我就直接写下啊,咱就。如果他们一样。我们把这个就是。T subject里边的值给的就是复制到这个。To subject里边去,最终再给它放到咱这个叫to final subject例子里边去,还是刚才这过程,那咱们先瞄上一个to。啊,先一个。这个先列个对象,然后另完之后用刚才我们说那个工具类叫B u.copy pro,咱做法就是把这个t subject中的值复制到这个to。
17:05
Subject里边去啊,就是把这里边的值取出来,再给它set到这里面去,这就做到了,然后都做到之后,最后把它放到咱们这个叫to final这个地壳中去,加个A叫to。Subject啊,注意别放错,放的是你最终这个数据。这样的话,我们现在在这个例子中应该有这个一级中的所有的二级啊,就是现在比如说你这个一级假如是前端开发,然后下面就得到前端开发下边的所有二级分类就有了,但有之后呢,目前呢,这些二级分类只在集合中,所以咱还需要最后一步骤。最后做什么呢?把这个就是一级下边的那个所有的二级分类带给他,放到那个一级分类里面去,带他放回去才可以。那怎么放?说一下啊,因为现在你看啊,One subject是一级分类,那我们就把它直接放进去。
18:03
我们就点上一个方法,这个方法。各位看到啊,Set parent,因为它里边有这个集合,那set parent就是什么set children啊,Set children里边的就是这个集合。To final,这样的话,这过程我们就最终完成了,主要就这么一个流程啊,这单就最终写完了。然后我再说一遍啊,最后我们来看这个最终效果。这过程怎么做到呢?第一步呢,咱先封装一级分类,一级分类呢不需要判断,咱把所有一级分类都放到这个翻译到subject例中去,然后第二个做二级分类,因为一个意义中会有多个二级,所以咱们下面做了一个循环判断,它有多个二级分类,你要判断二级是不是你当前一级下面的分类,咱用这个判断。二级的per ID等于一级的这个ID,如果它是的话,那我们给它封装放到集合中去,而集合最终还要放到这children里面去,因为它里边有这么一个结构,都放完之后各位看啊,最后在这个final中应该有咱们所有数据里边有很多的一级,在每个一中又有它的二级数据,应该全有,最后单一瑞屯数据应该都可以了。
19:27
但是有一点注意啊,你再往一级中放二级的时候,这个代码要写到你这个for循环这外边,就是二级的for循环外边你别写到里边去,写里边不对啊,它数据肯定有问题啊,你给它写到外边去。在它循环之后,再往里边放这个内容。这样的话啊,这个代码我们就最终做到了啊,稍微要复杂一些啊,但是这种代码后面咱肯定会还会写到这个代码,它就是一种比较典型分装方式,写两式一类表示结构,按照我们这个过程。
20:02
先查出来,再循环,再判断,最终都给它放过去,然后这么做之后,他就能返回咱们要求这个格式。主要啊,这个过程啊。这个咱就洗完了啊,然后洗完之后,我把这个我把服务器启动,我们最终给他测试一下,看一下这个结果啊。所以要求各位啊,自己多花点时间用在这个代码中,把这代码能给它熟练写出来,这种代码不管是我们在后面的工能中,还是各位在以后的实际工作中,这种封装过程会经常写到,一般来讲这种场景中经常都是这么来做的,做这种封装,因为他要满足这种格式啊,另外咱在后面做那个权限过程中,还有类似的写法,咱会写到那种递归的做法,目前我们先这么来做到。啊,这个功能是可以实现出来。然后咱们来试一下,最终这个结果看什么样的啊。还是到这里边,现在我再点一个try it out,大家看最终的结果,我们来看啊。
21:07
就是对比它。它这个数据我们现在返回的也是一个中括号的数组啊,这没有问题,然后在数组中有多个对象,咱看这逗号,这是第一个对象,这是第二个对象,这是第三个对象,然后在这个对象中咱再仔细看啊,这些都是一分类,就是前端后端数据库一分类,而我们仔细看在每个一分类中。咱是不是有个秋准,秋准中是个数组,这数组中是不是就是前端下边的多个二级,包括这个后端有它二级分类,数据库下边是不是有它的二级分类,所以咱现在这么一个结构,这就返回了我们要求格式。有你所有的一级分类,在每个一级里边有它所有的二级分类,咱要的就是这种格式,这个啊我们就做到了,按照我刚才说这个封装过程,把这做到,所以这个过程第一个各位记住它这种固定的一种模式,然后后面遇到肯定都是这种模式做到的,只是里边有具体过程,比如说我们做判断,根据具体过程。
22:14
咱们现在场景就是根据你的二级分类的ID和一分的ID做判断,看两个是否一样,如果一样的话做封装,不一样的话不做封装。这个啊,是我们写的最终的这么一个代码。这答案就最终做到了啊。所以关于这个课程分类列表的接口部分,这个接口代码我们就练出来了。主要这么一个过程啊,所以各位还是我说的多花点时间用在这上面啊,把这个能给他最终实现出来,这在我们后面会经常这么来写。
我来说两句