00:00
首先我们今天的第一个功能,咱们就先把这个名师部分,包括列表,包括详情,我们先给做到,先来做这个功能,而名师部分中的咱在之前我们这个前台中的第一天,我们搭建环境中,把它的静态页面我已经整合出来了。包括里边目前是这么一个效果啊,这是咱们之前整合过的。而在我的课件中呢,就是这个位置,大家看课件啊,我们到了A14第一个。首页就是这个名师,然后名师里边的列表和详情,这个代码我在页面中有啊,如果各位之前没有整合,按照这个把这页面整合出来,在这个过程中呢,咱之前还讲过一个知识点,这知识点我再说一下啊,比较简单,什么知识点呢?首先第一个。大家看啊,当我不管你是点课程还是点名师,那现在这个课程和名师的路径是不是固定的呀?而在我们的纳斯框架中,一种说法,它就叫做一个固定路由,就是你的地址是固定的,是不变的,而我现在比如说点击某一个讲师,因为每个讲师的ID是不是都不一样了,就是每次生成路径都不同。
01:19
假如说第一个讲师ID是一,第二个讲师ID肯定不是一,它可能是二,第三个可能是三,每次都不一样,所以这个又是一种路由,它叫NAS中的动态路由啊,所以里边有两种路由,一个叫固定,一个叫动态,然后固定路由呢,咱都是在这个配置里边建这个页面,比如说咱的讲师那就有teacher index,这是列表,课程有cos index,这是我们创建的,另外有这么一个叫动态路由。各位要记住啊,动态路由怎么创建页面呢?它的做法就是在咱们里边,我们建这么一个规则。
02:01
就是你把页面用下划线开头,后面加上你的参数名称,这叫动态路由,也就是我们现在根据ID得到课程的详情,它就用到了动态路由啊,这个啊是我们之前讲到的,可以把这记住啊,固定路由就是index,然后动态路由用下划线开头,后面这个名字可以随便写,比如说我写个ID,当然你可以写别的名字啊,只要它以下线开头,这就是一种动态路由,当你用ID查询就会进入到我们的下线这个页面中来。这个啊是静态页面整合是咱之前做到的啊,各位把这个如果你之前没有做,按照我这个过程把这页面复制过来。这个啊,咱说的第一部分,然后这个说完之后,下面再来看功能,第一个功能,咱先做这个课程的列表功能,把这个工作的那怎么做,我们先做一个简单的分析,然后咱们还是按照咱们前后端开发的流程,先写接口,用12个测试没有问题,在整个前端前端调接口得到数据在一位中显示,就是前后端这个过程之前我们一直是这么写的。
03:14
那咱们快速分析一下啊,课程啊,就是名师列表功能。这个我们先做到。那这怎么做,咱们看页面大家看啊,当我点名师进入到页面,页面中的咱肯定是查数据库,把这个数据得到,但是大家看数据啊,这个数据呢,肯定里边咱把里边的数据都查出来。但是书就有个特点,这个特点。这是什么?是不是要有一个分页呀,所以说咱们查询就是一个分页查询功能啊,但是里边没有条件,咱就做一个分页查询讲师的这么一个功能,这个啊是咱一块儿做的,然后这个查的过程中有这么几个细节。
04:00
大家注意啊,首先第一个各位看我现在页面中有几个讲师,咱数一下啊,这是四个,这是四个,是不是有八个讲师,也就是说我现在页面中显示八个讲师,为什么显示八个呢?大家看页面啊,就是咱显示中要考虑到页面的样式,如果说你现在啊显示九个讲式,它能显示。下边是不是多了一个,这样的话样式是不是就不美观呀,所以我们现在固定让每页显示八条记录,这样的话它的样式更加美观啊,这是我们一个效果,所以咱们下面就写一个接口。就是分页课程就是课程啊,不是课程名师扉页的列表功能啊,我老想做课程啊,咱先看做这名师,另外这里边还有一个细节。大家看这个啊,这个是分页功能,咱之前呢,在我们那个就是后台系统中,咱做的分页直接用的是element UI组件,但是咱这个分页后面咱换一种方式而用那个element UI组件,不知各位是否记得啊,当时很方便,咱直接传参数可以了,但是这个咱写的稍微底层一点啊,把这分页咱一会做到。
05:15
在这个啊,是咱们做的一个简单分析条件查询明示功能,然后里边分页啊,需要我们自己来做个处理,另外每页显示八条记录这个啊快速分析一下,然后下面我们开始写代码,首先第一个我们先来写一个。分页查询名师的这么一个接口,把接口我们先做到,那当然实现一下啊,就是现在我们来到我们的后端中,因为它是名师或者说是讲师部分,所以讲师部分呢,咱把代码就写到我们的E丢中,因为里边有咱们相应这个结构。然后在里边,因为它是我们的前台系统中,所以跟他我们做过区分,我就不在这里写了,这是之前的后台管理,所以大家写到前台,前台里边呢,我还是写到这位置,有一个叫front,之前咱做那个水面中写了一个接口,下面在里边我再来建个controller,专门写咱们的讲师的前台部分,那我来最后创建。
06:18
我建一个controller。这个controller,比如我叫这个teacher。Front controller。Front controller。这个啊,我们做一个创建,然后创建之后在CTRL上边我们加上它相关的一些注解,咱们把注解给它加上。首先啊,我们加的第一个注解就是这个叫risk controller啊,之前咱们一直在用,因为现在我们要反映数据,肯定加它,如果你不反数据,那加就是controltr。第二个我们加一个叫request mapping里边加上我们那个地址。
07:00
这地址我就用之前我们那种规则到里边复制一下啊,这地址叫edu service,那我现在把它就复制过来。Edu service,然后后面加上那个名字,比如我叫这个teacher front啊,因为是现在系统中,现在把这个我们就加进来了,然后加完之后咱们继续往下来写啊,就是往下把这个做到下面呢,我们先把那个service先注入进来,因为一会儿肯定要用到,那我们写一个。奥特曼。Private,这个叫edu。应该是这个名字啊,Edu teacher service,然后我叫teacher service,把它建筑进来。依赖啊引入,然后注入之后,下面我们写第一个方法。就是分页查询讲师的方法,那咱来实现啊,在这个位置我写这方法,因为咱们啊是一个分页,没有条件,呃,我也来一个POS提交吧,在里边起个名字。
08:09
我就叫这个get teacher。这个front。例子啊,就叫这个名字。这是我们写的方法,因为它要做分页,所以按照咱们分页的方式,分页中应该有那个当前页和每个记录数,所以我把这两个值咱们乘过来,当前页,比如我就叫配置。每页记录数,我就叫这个利密。这个啊,是我们传的参数,然后传完之后,下面我们写方法,我们就来一个public r方法名字我还叫这个名字,Get teacher front意思。然后在里边先存一个值,先不让他报错啊,比如存一个OK。这个啊是一个方法的这么一个结构,然后这个写完之后,在这里边我们来做这个具体分析,首先把这两个直线取到,因为这么写它是通过路径传值,所以咱们加一个pass啊,之前都写过,我就快速写下了啊第一个配置。
09:10
然后第二个来个这个pass。啊,不是啊,Pass。这个是limit,下面我们来做分页,分页做法就是首先第一步呢,各位应该知道啊,咱肯定是new这么一个配置,一个对象里边加上一个edu teacher。啊,就是new这个对象,然后里边起个名字,比如说我叫配置teacher,等于new上一个配置对象,在配置对象中的传入咱的两个值,一个就是当前页,一个就是每个技术数,这是里边的第一步,咱需要先用这对象,然后配置,咱引入买别的plus中这个配置对象,啊,包括这个。Edo teacher给咱引入,然后引入之后咱下面就来调这个service中的方法,把这扉页给它最终做到啊,那我们来调一下啊,这方法咱单独写一个,比如就叫盖头。
10:08
Teacher这个front。绿色。在里边把咱那个配置teacher这个参数。进来。这个方法咱一会儿在service中做个实现。所以这个啊是一个编写。然后这个写完之后呢,给大家说明啊,就是现在跟咱之前稍微有一点区别,大家看一下我们之前讲师分页中一段代码啊,就主要说这个区别啊,其他都差不多,再看之前那个写法。我们看到啊,之前咱做分页那个方法中找到。大家看啊,之前咱返回的是不是两个值啊,一个叫total,就是你的总记录数,还有一个叫Rose,是咱们每条,就是每页中数据的粒子集合,当时咱是反映这两只,而咱们当时啊,因为用的是IUI这个组件做分页,这两只就足够了。
11:05
但是现在呢,这个分页我不想用UI,我们想用一种比较原始的方式,就是像这么来做,所以现在呢,你再返回值,又不能只返回这些值了,咱要怎么做呢?我们就需要把分页中的所有数据都给它返回啊,也就是说咱们现在要返回。分页中的所有数据。比如说你的这个什么是当前页,包括每月记录数,包括你总页数,总记录数等等集合,这些数据都需要返回,这是跟之前不一样的地方,之前只需要total和Rose,现在我们分页,咱想自己来写的底层点,所以你需要把数据都返回。那怎么做呢?给大家强调啊,做法有很多种方式,给各位写一种比较通用的方式,因为很多时候我们都习惯这么来做,那怎么做呢?大家可以这么想。
12:00
在这位置,比如说我给它换一种结构,写一个叫map集合,咱把这分页数据呢,可以都给它放到一个map集合中,然后咱们把map给它返回,这是一终比较通的方式,比如说一会儿在测中在线分页,然后把分析数据得到都放到map中,最终把这map给它返回,然后咱们在页面中通过map再取值,应该就更加方便。这是一种方式,当然肯定还有其他方式啊,写一种比较通用的方式,我来一个date,里边就直接传这个map。这个啊,是我们写的controller,咱通过map来返回这个数据,就是把分页数据都放到map中,最终返回。这个啊,CTR写完了,然后写完之后,下面我们写service,在service中把这方法我们先创建。就这个方法做这个分页,然后service,这是它那个interface,咱再找到它的实现类,在实现类中把这方法我们最终实现一下啊,就是里边的这个方法,那咱们来最终把这个来写一下分页查询表示方法,那咱看怎么做啊。
13:14
它的做法应该不复杂,咱可以写个this,然后加个配置方法可以,或者说我们写一个叫base map都可以啊,我就写个base map,然后咱们调里面的方法是这个叫select,配置里边两个参数,第一个参数就是咱传过来这个配置这个对象,第二个是我们这个条件,没有条件咱可以来个空啊,那比如说我给他也第二个条件嘛,咱就做一个排序啊,第二个条件。我写一个叫query rapper。里边加上这个叫edu。这位置加个rapper,等于new上一个query rapper啊,咱先留个对象给它也加个条件。
14:01
这是第一部分啊。然后new完之后呢,像rap中,比如咱们加这个条件啊,我加一个叫order by d sc,咱之前用过是不是这个排序啊,比如我现在就根据这个讲师的ID做一个降序排列,咱给它加个条件,加完之后把rapper咱给它传进来,这样的话分页做到了,也就是说在你调这方法过程中,它会做分页,而分页之后呢,它会把我们分页的数据给咱们封装到这个配置teacher对象里面来。这里边会有分页导测数据。这个啊,我们就做到了啊,然后做到之后按照我们的方式,因为咱们现在呢,我们不是反映这个对象,我想返回的一个map集合呀,所以咱做法就是把肺页的数据取出来,放到map集合中给它对寸啊,这是我们要的这么一种做法,当然可能有其方式啊,我就按照这种过程来做了,那大家写一下啊。
15:03
做法就是。把分页的数据给它获取出来,然后放到咱的map集合中,把map集合最终返回可以了,我们就是这么来做。那咱来写一下啊,我就先这么一个map集合,咱就直接new这么一个叫哈奇map。把这个先溜出来,然后用完之后向map里边放入它相应的一些就是分页的数据啊,也就是从配置T中取的数据,那我们给它取一下啊,配置teacher,你看里边有这么多值,比如说我们取第一个get record。Get records呢,就是它那个每页数据的例集合,包括里边还有其他值,就是用配置teacher,咱可以把其他值给它依次都get出来啊,就这些值,那这个我就不敲了啊,我从课件中这些复制了,因为写法就是通过get的方法都取出来,我到里边啊,把这个咱就复制一下啊,咱就节约点时间,因为这个比较固定,主要就是这么几个值。
16:12
我把这个拿过来啊,然后咱看一下啊,呃,这改一下叫edu啊,咱们这个名字。包括呃,这个我都改成配置。咱们这个名字啊。都改成它。这样的话,这个值都有了,然后这个值咱看一下啊,第一个值是你每页数据的历次集合,然后这current当前页,这是总页数,这是每页记录数,这是总计数数,就你表中多少条记录,然后下面还有两个值。这要各位注意啊,这两个咱们在页面中也需要,因为咱们要自己来写这个分页,那这两什么意思呢?大家看它。这个就表示啊,你当前是否有下一页,比如说我现在一共有三页,当我到了第三页的时候,是不是就没有下一页,它一共就是三页,这叫是否有上页,比如说我在第一页的时候,是不是就没有上页,咱通过出和false做判断,你是是否有上页,是否有下页啊,这是两个,这个值我也写一下啊,这是是否有。
17:19
下一页,然后这个是是否有。上页,所以这些数据得到了,然后得到之后咱们给它就放到我们的map中,咱用map里边的put方法,里边有它的起个名字,然后在里边放它的值啊,比如说我第一个record,我们可以把它放进去,然后其他几个都是这种结构,用map.put依次放就可以了。这个啊,我从课件中给你拿过来,就是这个代码,直接map.put把它放到机构中去。就是这么几个值。所以这一步做到了啊,然后做到之后各位别忘记啊,最后一步你需要把那个map给它返回,就是咱们退1MAP不返回啊,它这个肯定得不到,这个不要忘记啊,所以这样的话,把这个接口部分我们就做到了,主要这么一个过程。
18:14
啊,大家把这个能写出来啊,就是咱们这么做的目的是什么呢?因为我们现在是自己要手动写个分页。所以这个分页中呢,是需要咱们这里边的所有的分页数据。咱就需要把所有数据都给它做个返回,也就是我们的做法就是把数据取出来,放到一个map集合中,然后给它退,我们在前的中取,再做分页。这是我们目前做法。当然各位也可以去整合咱那个IUI的组件,那个更加方便,我这么做只想咱们再换一种方式,让大家知道不同的实验方式啊,我只是这么一个目的,但是如果说你在实际的公司开发中,那肯定是怎么简单怎么做,咱直接用我们之前那个IUI那种方式肯定更方便,现在我只是为了换一种方式,让各位知道其他的写法啊,这是我的目的啊,所以咱们这个代码我们就完成了主要这个过程啊。
19:13
然后这个过程我把核心的部分给大家截个图。核心的啊,应该主要就这部分。这个啊,我截一下,然后放到我这里边啊。这样的话,讲师分页查询这个接口,我们就完成了主要这个代码,然后这个完成之后,我们再检查一下啊,还少了什么,呃,这个位置应该少了一个,就是咱说那个跨域。这个加上。然后加上之后,下面我把服务器启动,我们先用swagger把这功能咱先测试一下,然后再整合这个前端。那我们测试啊,把这个我给它启动EDUOB。启动启动之后打开swa,咱们这个服务这样个端口号,应该是第一个是那个8001,所以一会儿我用8001的swa把它来做一个测试,就看一下咱们这个分页查询讲师这功能最终能不能实现出来啊,咱们其中快速测试一下啊。
20:18
这个啊,我先。
我来说两句