00:00
下面呢,咱们继续往下来学习,刚才呢,咱们把这个统一返回结果已经完成了,那这些准备工作咱基本上应该都完成了,下面咱们就继续来完成咱们接口开发,那接口咱还要写什么,我在这里边呢,给各位先链接出来,然后咱们一个一个进行实现。咱们看一下啊,就咱目前呢,应该写的这么几个接口,第一个就是查询所有的讲师接口,这个已经完成了,这咱们刚才做到的第一个接口列出来啊,然后第二个咱们做了一个就是删除讲师接口,也已经完成了,这两个应该都做到了,那下面呢,我们继续往下来做,下面做什么我在里面列出来啊,下面咱们先实验一个就是分页条件查询讲师,也就通俗说的条件查询待分页。然后写完之后,咱们做一个添加讲师,修改讲师,包括最后一个叫批量删除讲师,所以最后咱把这四个接口咱们一个一个完成下,下面呢,我们先写这个接口,分页条件查询讲师,把这个咱们先做完成,那咱们开始写一下这个代码。
01:19
首先啊,我在图里边给各位同学来分析一下,因为这种场景在实际中用的很多很多,比如说各位同学可以想一象啊,你在网上买东西的时候就场景很多,比如现在我想买部手机,那咱怎么买,暂时不要搜索,比如说我搜索这个价格在500到1000块钱的手机。搜索之后是不是要分页显示出来,然后咱们每页每页进行查看,是一个很典型场景,所以咱们目前也是这么来做,做一个讲师的条件查询带分析这个功能,那怎么做,咱们先做一个分析。比如现在我在里边啊,给大家画个图,因为今天咱只是写接口,后面咱们写前端,但是图咱可以画一下,首先我们看啊,比如中间部分是你显示的数据部分。
02:11
然后除了这个之外,咱们一般来讲,在页面的上边是你的条件部分啊,比如我现在根据这个讲师的名称。就是第一个条件,第二个根据那个讲师那个头衔就是讲师,他是高级讲师还是特级讲师,还是什么讲师,包括第三个,第四个有他就是入驻咱这个平台的开始和结束时间,比如他入住我们查询在5月1号到5月10号有哪些入讲师,就开始和结束的时间,所以咱们一会儿查,按照四个条件进行查询,讲师名称,讲师头衔,开始入住时间,还有结束入住时间,最后肯定要在页面中会有一个。查询的这么一个按钮,这是条件部分,然后条件之后,咱们最后一般来讲,在页面下边是不是有一个分页条的部分,分页条里边呢,一般应该包含这么几部分。
03:13
写下啊,一般会有首页。伟业。然后还有什么,是不是有上一页,下一页,然后在中间会有你的页码数,比如说第一页,第二页,第三页会有这么些显示,所以咱们最终做的这个效果,咱今天是写一个接口条件查询待分页,大家把这个效果知道,而在查的时候呢,是这个条件部分有个特点,各位要明确啊,这些条件值是不是可能有,也可能没,就是可能为空,也可能不为空,比如我现在只根据名称查,或者说我只根据头衔查,或者说我根据名称和头衔查是不是都可以,所以这个条件值后面咱要做判断。
04:00
这个过程呢,在买杯的阶段,各位应该讲过一个叫动态circle可以实现,但是现在因为咱用到MP,咱们只需要在CTRL里边做条件判断,然后封装,最终就会实现,所以下面咱就来写下这个条件查询带分页的这么一个接口,把这个我们做实验,那咱们开始完成一下啊。首先做分页,第一部分我课件中写到咱们需要配置一个分页的插件,我把插件直接复制到我项目中的配置类里边,配置类咱们之前应该已经创建过了,我们打开看一下啊,就这个类。咱们看到啊,之前有这个麦克扫描,然后在里边,现在加上一个分页插件,为了做分页使用,这是我们的第一部分,然后第二部分在CTRL里边,咱来写一下这么一个接口,我写到这个位置。第三个。条件查询分页的这么一个接口。
05:02
然后在里边实现啊,首先这个接口按照我们SW那个。注解,加上一个API operator。条件查询分页这个接口方便咱们测试,然后下面加上它的提交,我就加上一个get提交,然后给它起个名字就叫find。配置就是条件查询分页,因为做分页嘛,至少得有两个参数,一个是你的分页中这个当前页,我们就叫current,另外一个是你每页显示的记录数,我就叫limit,这是我们写的这么一个路径,然后下面写方法,咱们加上一个哈。各位同学应该知道啊,咱们刚讲过,我刚才提到再说最后一遍啊。如果说在项目中的接口返回真的数据,那咱统一都返回是不是这个对象,所以在里边我就加上一个叫。
06:03
Result后面加上方法,我就叫find的配置这个方法,然后加上之后在方法中把两值得到一个当前页,一个每月记录数,加上一个pass。啊,我就来一个浪类型了。第一个是current代表当前页,然后第二个pass。浪类型利蜜桃。代表每页显示记录数,现在都可以了。然后得到之后呢,因为在里边咱是不是有那个条件部分,条件部分呢,我们获取多种方式,咱可以通过一个实体类进行获取,我在这里边呢,给大家提前写好一个实体类,就是这个。啊,这里它叫做teacher query,用它来得到,那我在里边用它来接收到你的条件,我先写上,一会咱们看一下啊。
07:01
Teacher query。咱们到类中看一下,大家看啊,里边有名称、头衔,开始时间,结束时间都有,所以用它来接收到提交过来的数据,这是我们一个基本结构,然后结构写完之后,下面咱们开始写这个代码,我们来做个实践。首先我们写第一部分,刚才提到了,因为它的条件值是不是能为空,也可能不为空了,所以咱根据条件值,我们首先做个判断,如果条件值等于空,那我们做一些处理,不等于空,再做其他处理,咱就用这个之前讲过这个query做这么一个判断。那这里边我来写一下啊,这个过程。首先我们写的完整点啊,先判断这个teacher宽VO这个对象是否为空,就是它如果等于空,就是对象等于空,表示没有条件,没有条件那咱直接查全部啊,所以我判断的完整点,加上一个if。
08:10
写下就是teacher query VO,他等于,那那咱就直接。查询全部就不需要做分页,如果说它不等于呢,那咱们再做这个条件的处理,包括操作啊,那我写一下啊,如果等于呢,我们直接调方法,Teacher service里面这个方法叫list,最终返回这么一个集合,咱把它直接做一个re。Result。点上OK,传入list,直接返回,如果它不等于空,那咱们进步来写,咱们就是获取一下我们那些条件值,然后进行非空的判断,再进行条件的封装。
09:02
那咱们。完成一下啊这个过程。首先把条件值咱先分别取一下啊,我先给它都得到出来,第一个name就是这个讲师名称。然后我再获取第二个。Get level讲师的头衔,Level级别或者头衔,然后第三个是他的开始时间,Draw date begin,就是你什么时间入住的开始时间,还有下一个结束时间。Get这个join date and。结束时间,现在把条件值都取到了,然后取到之后下面咱进行非空判断,并且完成这个封装。那咱们写一下啊,下一步操作。我写到这位置,首先呢,咱们封装在MP中有个对象,各位是否记得就是封装条件那个对象,咱们之前讲过啊,应该说了两个,一个叫quary rap,一个叫拉的rap,咱现在就用RY rap,因为这更方便在里边加上泛型teacher。
10:14
Rapper等于new上一个query rapper。扭一下,然后下面我们进行飞空的判断。那我们来写一下啊,非空判断呢,就是判断这个值不等于捺,就是它里边不是捺,也不是空字符串就可以了,这个判断呢,在我们spring里边有个工具类,咱可以直接用一下,叫string u里边这个意思,Empty加上name。这表示等于空,不等于空,加上一个感叹号,非这些方法看一下各位看啊,是不是等于那空字符串,所以它不等于呢,也不等于空字符串表示值不等于空,用工具类里边的意思M提行判断,另外工具类各位特别注意一点啊,这个类别导错包,它是死润里边的这个U条,你别找别的包,别的包这里边。
11:11
它会有些问题,咱用里面这个U啊,这包一定不要导错,如果它不等于空,那咱们封装条件rapper里边第一个我就加上一个like了。加上咱们这个字段,加上你的值,这个值就是name。然后这个字段呢,到表里边咱看一下啊,别写错,就这个内幕,所以这是我们的第一个判断,后面判断跟它一样,咱们用它快速改出来,再看下一个判断啊,下一个判断这个叫level。就是它的级别,那咱们封装用EQ level。然后它的值是level,这是咱的第二个判断,判断级别用这个查询,另外还有第三个,第四个是他的时间。
12:03
我就要复制两个,说一下时间怎么做。给各位说明,比如说咱们这个是。Draw begin。这是join,这个and,我强调啊,什么叫时间?在我表里边呢,有个字段叫time,是不叫入住时间,那这查的其实是一个区间范围,什么叫区间范围?开始时间,结束时间我们要大于等于开始时间,小于等于接术时间。比如我查2022年5月1号到2022年5月10号,那5月1号是开始时间,5月10号是结束时间,所以咱们按照它大于等于开始时间,小于等于结束时间。那我写一下啊,大于等于,各位是否记得方法是什么?是不是叫GE小于等于就是这个Le,然后这里边我们根据这个创建时间,我们做这么一个处理啊,根据它进行操作,那咱们看表里边那个字段。
13:04
啊,有一个这个啊,这个时间啊,入住时间啊,就是它啊专门写入时间,其实根据这个也可以啊,因为创建时间跟他应该都一样啊,咱用这个join date进行判断。这个来不来,然后这个是大于等于开始时间,小于等于结束时间。注意啊,这两值写的时候不要写错,你别给它写错这个名字,这个是大于等于begin,小于等于and。这样的话,咱把这个就完成了,然后完成之后,最后咱就调方法,得到咱们最终的结果啊,那我们来。调用方法,最终分页查询。而分页查询的时候呢,在里边咱肯定需要就是创建一个对象啊,这个配置对象咱之前讲到过,加上teacher,我叫配置。等于new上一个配置里边传入你的当前页,还有每页记录数。
14:07
蜜桃,然后最后调方法,Teacher service里边咱们找这个方法,应该就是这个配置。里边传入配置P,还有这个rapper就可以了,然后这个之后呢,就是最终这个配置PMO中就是我们的数据啊,当然也可以加个返回结果不加也可以,都是可以的,那我就加一个啊,咱就返一个叫。I配置。然后这个名字我叫配置model,那就叫它了啊,就是你不加反应值,用配置拍是一样的,最终咱们做个铝就给它返回一下就可以了。然后返回一下啊瑞。R点这个就造点OK,里边加上配置model,这样的话我们就完成了这么一个结构啊,这是我们写到一个特点啊,但是这个过程中呢,有一个小问题啊,因为我们第一个判断的时候呢,查全部,这里边让它也要做个分页,咱目前只是把全国查出来,没有分页,所以把分页完善一下啊。
15:13
这个我就拿到最上面去给它做一个完善啊,放到最上边。就是分页中创建这个配置对象。然后在里边做分页查询。点上一个配置里边传入配置P条件值传到,因为这里边没有条件,然后最终让它返回的就是还是这个值啊,跟它保持一致,因为返回都是它。最终配着model直接放进去。所以咱们这样的话呢,这个接口部分就最终完成了,就这么一个实现,咱们再看一遍啊,然后最后做测试,这个过程就是首先得到当前页,每页技数数,还有条件部分,用一个写好的V对象,这里边进行获取,然后咱们进行分页,这个配置对象的创建,首先判断,如果对象就等于空,那咱这一查全部,直接那查全部,如果不等于空,获取条件值。
16:18
进行非空判断。如果这里边判断之后封装调方法,得到条件查询,待分析之后的结果,把它最终做个退就可以了。所以以上是咱们完成的这么一个接口,这咱就洗完了,然后洗完之后下面呢,我把这服务器重新启动下,咱通过swag做个测试,看一下最终结果是怎么样的,我们来测试一下啊,看一下结果。再动它启动下啊。这位置我也加上了swa哥这个注解啊,里边有个中文提示条件查询分页,那咱们把swa打开,找到我们刚才这个接口。
17:03
就是这个偏差分页在里边输入条件。再来输入啊,大家看啊,第一个当前页我就查这个。第一页了啊,然后这里边每页记录数啊,它不在一写,这无所谓啊,这里边都有这个值,然后就输入一个,比如输入一个二啊,为了它方便,然后这里边有很多条件,我就输入,随便输入一个条件,我先看一下我里面的数据。啊,为了明确先都改成零。然后数据中呢,我就输一个名字,因为名字里边呢,有很多啊,比如咱都输一个叫老师,因为它都包含这个老师这个这个词。老师现在啊就可以了,然后我点这个执行,咱们看最终的结果怎么样啊,大家看啊,这结果出来了,然后结果中目前这里边返回了两条数据,因为咱每页显示两条,这里写到。一共有四条记录,每页两条,当前是第一页,包括一共有两页,这值是不是都存在,所以这样的话,把这个条件查询带分页,我们就最终实现出来了,里边这么一个效果,所以各位啊,把这个接口能给他准确的实现出来。
18:17
这个咱们就写到这里。
我来说两句