00:00
下面呢,咱们开始编写课程分类列表接口,首先我们先把列表相关的就是controller service map先生成出来,然后咱们来再做一个实现,那咱们来看一下啊,首先我在里边找到我们之前用那个代码生成器,我们应该是在T里边把这个找到,找到之后把里面一些值改一下,首先第一个就是这个项目应该还是这个项目,然后下面再来看,里边有数据库,这个不变,另外这个包应该也不需要变,最后我们有这个表表改成咱们当前这个表名字叫subject,那把这个复制。所以现在这个就完成修改,修改之后我们把它执行。然后把相关的代码咱们先生成出来,这是我们编写的第一步准备工作,咱们等他执行。现在已经可以了啊,然后咱看一下里有个包括实体,实体呢,咱们还是用那个model中统一用的那个实体类,这先去掉,然后咱改一下啊,先改一下service。
01:15
改成咱们统一model中的十几类,这个去掉。然后把这个引入。这是一个,然后再改它的实现类。这位置我也改一下。最后改他这个map。所以现在啊,这个代码我们就生出来了,生成之后咱们看一下这个subject中啊,有一个地方看一下,里边的一个特点我们看一下啊,各位看里边前面都是基本属性,咱看最后一段内容。呃,这第一个是wa一个注释,这个注解啊,这个,然后下面打看这个啊,打家看这句话你看啊,Table field指的是你表中的字段对应的你的属性,当然我加上这句话叫一个Z等于false,说一下什么意思啊,它就表示呢,如果说你不写这句话,它会到表里边找这个对应的字段,但是表里边咱目前没这字段,它会报错,所以加上这句话之后就表示我现在属性在表中没有对应资源,因为这个属性咱一会儿要用到,根据它要判断有没有下层数据,所以咱加上这个注解就表示。
02:29
表里边没有对应的字段,但是这个属性我们是需要用到的,这各位记住啊,如果你不加这个会报错,它会找表中字段会提示没有对应的字段。所以现在这个知道。然后这个之后下面呢,咱们开始编写这个接口,我们写一下啊,首先我们写CTRL这个路径,我跟课件中就保持一致了,咱们还叫这个路径,然后别忘记啊,加上跨域的这个注解。加上之后在CTRL里边,我们把这个service注进来。
03:05
Subject。Service做个注入,然后注入之后下面我们写第一个接口课程分类的列表接口。这个我们做一个编写。然后这个接口刚才提到了,因为咱们用的是懒加载的方式。所以说呢,每次只查询应该是你的。一层的数据,比如说我现在啊,我查第一层,那大家想一下啊,什么叫第一层,就是判D是不是等于零了,我第二层比如说查后端下边的,那它的他ID是一,以此类推,所以咱们查的话怎么做,根据它的ID,然后进行查询,就是查询里边的数据,我写个语句啊,咱写个具体语句,比如现在啊,我查第一层数据,咱们写个select星from。Subject。然后加上where where里加什么?就是你的ID值等于零,这个查出来的是不是就是你的第层数据?比如我查后端下边哪些数据,那派等于一是不是就是它的下边有哪些数据,以此类推。所以咱们做法就是根据这个pro ID等于值,每次查询它的一层的数据,就查它的下层数据,比如你是第一层,第二层等等,那现在我们来写一下这个代码。
04:30
咱们来做个实现啊,首先我加上一个注解A片。然后这个功能就是我们说这个课程分类列表。这个功能下面加上方法。方法中先加上提交方式,我们加上get提交,然后给它起个名字,这个名字比如就叫get这个啊,因为他查的是一层数据,我们就叫get这个。
05:00
Subject。这个名字随便起,后面传入你的ID,就是partd进行查询,这是我写的一个名字,然后下面加上方法,Public。Result。后面加上方法的名字,比如还是叫这个名字,然后在里边把ID值我们给它取到。加上一个叫pass valuable。我加上啊。Pass,然后加上你的ID,这是取到它的值,然后取到值之后,下面的就调用service中的方法做个查询,里边比如咱一会儿写个方法,我就叫list里边传ID,最终返回就是你的每一层数据,咱们肯定是一个list的集合。然后他的泛型我们叫这个。Subject。
06:00
最终把它做一个蕊退就可以了,这个咱先给他蕊吞下。result.ok。里边传入。List,所以现在啊,咱们把CTRL部分就完成了这么一个特点,完成之后咱们编写search里面方法,我在search中把方法先进行创建,然后来到实现类中,最终实现这个方法,那咱们最后最后实现这个方法,刚才咱写过语句,就是根据per ID做个查询就可以了,也是语句呢,就是我们刚才写到。这个语句通过它做个查询就可以实现。那下面啊,咱来把这个快速写下,因为里边呢需要用到条件,所以加上一个叫query rapper。加上subject。然后这个上个在rapper中呢,来设置它这个加上一个ID。
07:08
它的值等于你的ID值,最后我们调方法。然后这个方法调的时候注意啊,现在我们在里边是不是要调用map中的方法,而中呢,怎么调用map,咱之前讲到过啊,第一种方式你可以注入,另外可以不注入,他帮咱做到了,咱们用base map直接调就可以了,所以我在里边加上一个base map。然后加上这个方法叫select list,最终返回到就是咱们这个查出来的list集合,咱们起个名字叫subject list,最终把它做屡退,所以现在咱们根据ID就查出来了每一层的数据,这个咱们就完成了,这各位能给他快速做到。
08:02
但是这个完成之后呢,里面有一个小问题啊,咱刚才提到了,我们最终用到I组件,它会根据has children做个判断,如果值是处,就显示下头数就多了一个箭头,如果是false,那就不显示,咱目前做的应该没有做处理,目前做的还对children值应该默认,应该都是那个force,因为它就是一个布尔类型,那咱们先做个测试,然后咱们再进一步完善。我先加个土度啊,一会儿咱再完善。现在我把服务器启动,咱们先把这接口先做个测试,看一下目前效果怎么样,然后咱们再进一步做完善。等它启动啊,然后咱们试一下这个测试,同样用swagger咱们进行测试。等他先修起来啊。现在啊已经启动,然后我们打开swa。
09:00
我打开一下啊。Local host8301加上swa。杠Uy.HTML回车。找到我们的接口。这个接口咱们没有加那个注释啊,应该加一个中文的提示,我就直接这么测试了,Subject controller,这是列表,然后在里边我输入值,比如说第一个我输入一个零,然后执行。大家看是不是查出你第一层数据,比如我输入一个一一次查询,但是大家看啊,在数据中的这个值Hass children值目前是不是都是false,都是false的话,你用ivu,它就没法显示下层数据,所以咱针对它要做过处理判断是否有下层数据,有的话这值就是处,没有的话这个值就是false。那怎么判断有三层数据,同样的效果,根据拍查是不是就可以了啊,所以咱们下面把这个再进一步处理。
10:03
那我来说一下啊,咱们在实际开发中呢,经常有这个场景。什么场景,就是我们啊,查出来的数据往往不能满足咱的要求,咱需要把数据再做进一步的封装,再做进一步的处理,所以现在我们还是这么来做,而现在这里边怎么做,说一下啊。Subject list,咱是不是要便利,然后便利得到里边的每个subject的对象。判断这里边是否有下一层数据,如果有的话,你把里边那个has children值。给它设置成处就可以了,这个啊是我们要做的这个事情,那下面咱来做一下,把这个集合便利,然后判断里边是不是有下层数据,有的话咱来做这么一个处理,那我写一下啊。
11:02
我把它这个便利。加上subject。然后这是subject list这个集合,我们就用这个增强循环做个便利,之后这里边有个,然后我写下啊,咱们就是获取这个里边那个ID,因为ID对应关系能看是不是有相同数据,比如说这个意思,比如说我现在啊查出来是后端开发,我们要判断后端开发下边是不是有相同数据,那怎么做后端开发ID是不是一啊,咱根据一查谁的盘是一,就查它下边有没有数据可以了,所以咱们根据它的ID进行操作,那这位置我把subject里边的ID我们给它得到。得到之后我们做个判断,比如起个名字就叫这个,呃,ID。
12:01
然后下面呢,咱们来做个查询就可以了,这个查询我来调个方法进行实现啊,咱们写个方法为了方便啊,我们就叫意思。就是不是有下层数据里边传入咱们这个ID。最终让他就返回一个布尔类型啊,就是是否有下一层数据。呃,这个名字我叫秋准啊,秋准。然后咱们写方法,如果说里边有数据没数据分返回出false,咱把这值最终做个封装,就是封装到你的对象里面去。那我们写一个subject.set has children等于这个值child,如果是设置成是false,就会设置最终瑞可以了。下面咱们来写一下这个方法,我在里边把方法咱们做个创建。这个方法就是判断是否有下一层的数据。
13:03
那咱来写一下啊,这个写法就是根据ID做个查询就可以了,咱们加上query rapper。Rapper等于new上一个query rapper rapper里边设置它的条件,加上一个ID。等于subject ID,然后最后我们调方法中的方做个查询就可以了。当然各位注意啊,我现在呢,其实只需要判断有没有下层数据,这个数据咱不需要查出来,所以你用list可以,但是里边我们可以再换个方法再用一下啊,大家看这个方法。各位看啊,Count什么意思啊,我穿个rapper,你说这方什么意思啊,是不是得到你查询那个记录数,比如现在啊,我这里查出数据,那抗的值是不是要大于零了,如果查不出来,这值是不是就等于零了,所以最终根据它,我们最后处理,我们就直接蕊吞这个。
14:08
Count大于零就可以了,这要求各位能看懂啊,说一下什么意思,比如你现在查出数据肯定是大于零,那咱们一大于零的值是不是就是处?如果你超出数据就是零零大于零是不是就是false,所以现在我们这么来做,最终反复类型,咱们再设置到这个subject里面去。所以以上啊是我们写的这个地方,这各位要知道啊,实际中经常这个场景查询出的数据往往不能满足咱的需求,咱们需要把数据再做进一步处理,我这里边就是便利判断每个下边是否有相同数据,如果有的话这只是处,没有的话这值是false,咱们又写了一个方法,专门查他是否有相同数据,然后最终这个true或者false这个值。
15:01
所以现在啊,通过以上这个代码,我们这个课程分类的列表接口,咱们就最终完成了,大家把这个代码好去看一看。然后完成之后我把服务器重新启动,最终我们来试一下啊,这个代码比之前写那个增删凯啥要稍微复杂那么一点点,就是多了一个数据的封装和处理的过程啊,把这个一定要进一步熟悉一下啊。这个完成,然后咱们打开swa,我们来做个测试试一下啊。我先说一个值。零,然后执行。大家看啊,你看这个值。海似children值目前是不是都是处?比如现在我再试一个啊,我是一个ID是一的后端开发,然后咱们执行大家看啊,后端开发下面只有一个Java Java下边没有相同数据,它的指示就是false,所以现在课程分类列表的接口部分我们就最终看完成了。
我来说两句