00:00
好,那下面呢,我们就来实现一下分页功能,首先呢,这个分页功能呢,大家注意,是我们在讲买杯提的分页插件的时候,然后给大家分析的一个功能,这个分页功能呢,它主要是分为两个方面的内容啊,首先第一方面就是说我们要来在页面中获取分页相关的一些数据,比如说我们要把当前页的数据给展示在页面中,我们还要来获取呢,比如说我们当前页是否为第一页啊,是否为最后一页,还有我们的导航分页,还有我们的上一页的页码,下一页的页码,还有呢,就是我们的总页数,像这些我们都需要获取到。然后第二个内容就是说我们需要在页面中设置跟分页相关的超链接,对吧?然后呢,让用户可以通过这个超链接来访问指定页码的数据啊。好,那这个功能我们该如何实现呢?首先呢,大家注意我们在买be提的核心配置文件中,已经将咱们的分页插件呢已经配置配置进来了,所以说我们就可以直接来使用它的分页插件了,那在这我们应该怎么做呢?首先咱们先把这个路径来设置一下啊,大家想,如果说我们是在查询所有员工信息的基础上,然后来实现这个分页功能,那咱们的路径呢,是实现employee,但是呢,我们知道在我们的分页功能中,我们当前页的页码它一定是从浏览器传输到服务器中的,对不对?那所以以我们rest风格的路径来说,我们要想来传输当前页的页码,那我们是不是必须要把这个数据作为请求地址的一部分进行传输,也就是说我们要怎么写呀,咱们要这样去写,然后这个一就是我们当前咱们这个要访问的,要访问的页面,要访问的这个页码,对吧?好,然后大家注意,那这个时候大家有没有发现,你看你的这个路径跟这个路径。
01:48
它是不是就是一模一样的,对不对,也就是说我们有两个request mapping,然后他所处理的请求的请求路径一样,然后呢,他所处理的请求的请求方式也是一模一样的,那这个时候大家说你要是真发送一个这样的请求啊,那我们让哪一个请求映射所对应的控制器方法来处理呢?这个其实我们之前在讲spring VC的时候就跟大家说过,如果你的两个你在控制层中两个或者说多个request mapping,他所处理的请求是一模一样的,那我们当前你的项目它都启动不成功,知道吧,这样的啊,所以说呢,咱们可以把这个路径呢给他更新一下,比如说我们查询所有的员工信息,咱们这样来做,然后呢,咱们查询这个员工的分页信息,员工的分页信息好,然后这个时候咱们可以在这呢,给它加上一个配置,对吧,然后再给它加上一个一,然后这个一就是我们要访问的这个页码。
02:47
能看懂吧,好啊行,那下面呢,我们就可以来写一个方法,大家注意这个方法我就不这个这个请求映射,还有控制器方法我就不给大家删了,然后下面呢,然后咱们这个直接来写一个新的就行啊好,然后public,然后它的返回值也是string,因为咱们最终也是要实现页面跳转为结果的啊,这个咱们叫get employ,以及get employee配。
03:14
然后叫做获取员工的分页信息,然后大家说这个时候我们第一步是不是就需要直接来获取,来调用咱们的业务逻辑对吧,然后来获取分页相关的数据了啊,来获取,然后咱们员工的分页信息啊,大家说那我们在这要获取什么类型呢?你在这能直接获取一个list类型吗?不能吧,如果你只获取到一个list类型,那大家说我们现在咱们是不是只能来获取当前页的员工信息,我们能不能来获取当前页的这个分页相关的数据呢?就比如说我们是否为第一页,是否为最后一页,对吧?然后是否有上一页,是否有下一页,对不对?大家想一下,这个时候是不行的,所以说呢,我们之前咱们在讲分页插件的时候,咱们讲过两个对象,一个叫配给对象,一个叫配给付,然后在这两个对象中,它是不是就把咱们分页相关的所有的数据来进行了封装,对不对?好,咱们可以来找到咱们之前的这个买be提斯啊,大家可以看一下。
04:18
My be,然后在最后,然后我们讲的是一个分页插件的功能,在这呢啊,大家注意好,然后这个是我们当时给大家去分析的这个分页功能,然后下面呢,就是我们分页插件的一个使用方式,好,然后再往下呢,就是我们分页相关的数据了,对吧?这个里面呢,我们没有把配给对象给大家输出,因为这个配给对象其实最终就是在我们的,在咱们的配给音符里面,其实它也有这个配给对象,就比如说这大家注意啊,从这开始,然后到这个位置。啊,我看一下啊,好,这个list,然后等于配给大家注意就这个啊,然后这个就是我们当前咱们的配给对象,它里面的一些数据,然后当然这个page in for,咱们说里面的数据要更全面一些,比如说我们这里面有什么page number,当前页的页码有page size,每页显示的条数有size,当前页显示的真实条数,对不对,然后都在这儿呢,大家看到了吧,好,然后还有呢,咱们的total总记录数,然后page总页数,还有pre page是上一页的页码,然后next page下一页的页码,然后呢,还有是否为第一页,是否为最后一页,然后是否有上一页,是否有下一页,还有我们导航分页的页码数,还有就是咱们导航分页的页码。
05:37
这个大家能看懂吧,那所以说我们现在是不是只需要来获取一个配给音符,大家看啊,我们只需要来获取一个配给音符对象,那我们把它给共享到咱们的请求域中,那我们在页面中是不是就可以来访问跟分页相关的所有数据了,对不对,比如说咱们当前这个list,就是我们当前,我们当前这个页码所对应的员工的一些信息。
06:03
能看懂吧,如果说我们要来设置咱们分页相关的数据,那下面咱们的这些,那下面要设置咱们分页相关的一些超链接,那我们通过下面的一些数据是不是就可以实现,对不对?所以说大家看啊,我们在这需要来获取的一个对象叫做配给音符,能看懂吧,它的扇型呢,就是我们当前的employee,我们要来展示的员工信息啊,好,这个咱们就叫做page,然后等于来调用我们的employee service点咱们就get employee。配OK,这个大家注意啊。好,括号,然后在这咱们需要把谁传过去,大家想一下,那我们说了,咱们要想来获取分页相关的数据,那我们一定要知道你访问的是第几页对不对,所以说在这是request map,好,然后呢,咱们需要来处理的请求,咱们刚才已经写过了,然后叫做employee,然后page置,然后再加上我们当前页的这个页码,然后在这儿的话,大家想既然是当前页的页码,那我们既然是通过把它给拼接到咱们请求路径中的一部分传输过来的,那咱们是不是就要用到谁呀?叫做路径中的占位符对不对?比如说这个咱们就叫做配接number OK吧,然后我们当前咱们这个请求的请求方式应该是request method.get。
07:26
因为咱们是查询功能嘛,对不对,查询功能在我们的rest风格里面,然后咱们所使用的请求方式应该是get啊好,那我们下面咱们是不是就要把我们当前占位符所对应的值,然后跟我们当前的一个雄参进行绑定,叫做in tIgEr,然后page接number,好然后在这加上一个pass variable able,然后括号,然后这里面呢,是不是直接来把咱们当前占位符的名字,然后拿过来就可以啊行,然后下面呢,我们要做的是不是就是根据我们的配机number当前页的页码来获取分页相关的一些信息,好再往下呢,大家说要干什么了,咱们是不是应该是要将咱们的分页数据对吧,然后展示啊分页数据,然后呢,这个共享在共享到咱们的请求域中,OK,然后怎么来实现,大家想一下,那我们要共享到预对象,那我们是不是有好多种方式,那我们在这儿一般咱们用的是。
08:27
是不是都是model,对不对?好,然后再往下呢,是model,然后点ad attribute,比如说它就叫做配好,然后配,然后我们现在咱们要跳转到哪个页面,大家注意,比如说我们还是跳转到咱们的列表页面,然后所以呢,大家看好,当我把分页功能实现之后,大家这个功能你就访问不了了,知道吧,要不然大家在这儿呢,你可以创建一个新的页面也是可以的啊,为什么?因为我在当前的这个方法中,我们往请求域中共享的数据叫list,而我们现在呢,咱们在这个方法里面,我们往请求域中共享的数据叫配置,而我们当前咱们的当前页的这个员工信息是在配置里面的哪一个属性中啊,在list的属性中知道吧?啊,在list的属性中啊,换句话来说,如果我们现在跳转到咱们的列表页面之后,如果我们是通过咱们访问这个方法控制其方法来跳转到的这个页面,那我们现在咱们在这还能直接写。
09:27
List吗?不能,我们应该是来访问我们请求域中共享的配给对象中的list属性的值才是我们当前的员工信息,OK吧,行啊好,然后我们把这个方法呢,然后来写一下。杠星星,然后这个是来获取员工的分页信息。好,然后再来找到它的实现类,来对咱们的方法来进行重写,大家注意,那我们还需不需要再去重新写一个这个map中的map接口中的方法了,不需要,大家还记不记得之前我们讲的这个分页功能,它的步骤是什么,大家想一下,我们在这是不是可以直接来调用我们map接口中的方法,它的返回值呢?其实直接就是一个list的集合,我们要想来实现分页功能,我们是需要在查询功能之前,就是说我们在查询所有员工信息之前呢,在这个地方我们需要来开启分页功能,开启分页功能。
10:27
有印象没有,怎么去写呀,叫做配接helper,大家可以去看一下我们的这个买be提咱们讲这个分页插件的时候的这个步骤啊,然后大家看啊,我们要想来实现分页功能怎么办?我们需要在查询功能之前,然后来使用咱们的这一句话来开启分页功能,然后我们需要在查询之后通过我们的配给音符,然后来收集跟分页相关的一些数据,能听懂吧,好OK,那我们是不是就可以通过配置help.start配置来开启分页功能,这里面咱们需要传进来两个参数,首先第一个就是我们当前页的页码,那当前页的页码那我们是不是从浏览器传输过来的对不对?所以说咱们在这直接写个page number,然后呢,如果我们要想来设置我们每页显示的条数的话,那这个地方大家注意,一般情况下每页显示的条数都是写死的。
11:23
比如说我每页显示四条,能看懂吧,当然呢,这个东西你也可以动态去设置,比如说我们可以在页面中对吧,然后在这儿呢,比如说我们在咱们的这个最下边,咱们分页相关的超链接的地方,你去写一个这个下拉框,下拉框里面,然后给它设置一些选项,就比如说每页显示五条,每页显示十条,每页显示15条,每页显示20条,对吧?当我们去选中某一个这个下拉框里面的某个选项的时候,然后咱们就来触发一个事件,对吧,然后呢,去把我们当前咱们的这个配级size子,也就每页显示的条数给改一下就行。
12:02
OK吧,也就是说,如果你真的想把这个数据设置为动态的,其实也行,那无非也就是说我们当前在控制器中,咱们在控制层中,咱们在这儿获取的数据原来只有page number,现在还有一个page size,对不对,这样的啊。好,那咱们下面呢,咱们接着往下看,然后我们现在咱们已经开启了分页功能了,然后呢,所以说下面这个咱们是不是应该就是要来查询,要来查询咱们所有的员工信息,大家注意咱没有写错啊,他就是要来查询所有的员工信息,因为我们的分页插件,它叫做配给intercept,也就是说这个东西啊,它其实本身呢,就是一个拦截器的功能,它会对我们当前咱们所执行的查询功能呢,然后呢,干什么进行拦截,在我们当前这个方法所对应的SQL语句中,直接来加入什么呀,直接加入limit。来实现分页功能,知道吧,所以说呢,我们当前呢,然后咱们开启完分页之后,然后我们它是我们的分页功能,是针对于我们下面要执行的这个circleql语句来说的,知道吧,如果你在这查询的是所有数据,那它就是在我们查询所有数据的基础上加上limit来实现分页的,知道吧,好啊,来下面呢,我们还需要干什么,咱们在这是不是需要来获取分页相关数据对不对?然后是page音符,然后它的泛型是音employ音,然后呢,就叫page OK,等于另一个page积因符,然后这个括号中咱们一共有两个参数,首先第一个就是我们当前查询出来的这个。
13:44
就是我们当前咱们所查询出来的这个员工的一个集合,咱们在这直接把这个list给放进来,然后咱们在这儿呢,大家看好这第二个啊,然后第二个呢,然后叫做int navigate pages什么意思?Navigate pages是咱们的导航分页的页数,也就是说我们现在咱们在页面中。
14:06
然后我们需要来显示几个导航分页。大家还记不记得什么叫导航分页啊,就是我们在咱们的这个地方设置的,知道吧,比如说你设置一个五,那我们当前页面中就有五个导航分页,它是以我们当前页为原点,然后呢,来显示它的前两页的页码,以及它的后两页的页码。当然呢,也有特殊情况,比如说我们当前咱们访问的是第一页和第二页,那我们的导航分页显示的都是什么?12345,如果我们现在咱们一共有八页对不对?然后呢,我们当前咱们访问的是最后两页,那咱们的导航分页呢,显示的就是最后五页,这个大家能听懂吧?好,所以咱们之前呢,跟大家说过这个导航分页的问题,那比如说我们现在咱们就让我们的这个一个页面中呢,然后来显示五个导航分页,以当前页码为原点,对吧,然后来显示它的前两个页码,以及它的后两个页码啊。
15:04
行,那我们的配给咱们获取完之后,那下面咱们是不是直接把这个配给来返回就可以知道吧,行,那这个功能咱们就写完了呀,然后我们来找到咱们的首页,那现在咱们就不要访问这个功能了,因为咱们去一会儿还需要去改咱们的页面,所以说呢,咱们在这直接来访问咱们的分页功能,来斜线,然后配置在斜线一默认访问第一页啊OK吧,行,然后这个是来查询咱们当前员工的分页信息,员工的分页信息OK啊好,然后呢,我们再来找到咱们的页面,因为咱们之前呢,然后我们是通过这个控制器方法,然后来跳转到我们的员这个员工列表页面,然后,所以我们在这需要来循环的这个集合,应该是我们从请求域中,然后来共享的这个list,但是我们现在咱们如咱们是要通过这个控制器方法来跳转到这个页面的,对不对,那所以大家来看我们现。
16:04
在共享的是不是配集对象啊,对吧?而配置对象中哪一个属性来表示的是我们当前页的数据呢?大家来看一下叫什么叫做list,知道吧,就这个啊,叫做list,然后我们把它输出的时候,这前面这不是属性名,这后边这不是属性值吗?对不对,对吧?所以说咱们直接点list就可以啊好,那我们来找到咱们的页面这个地方大家就要改一下了,应该改成是配几点list。OK吧,是配几点list啊行,那我们把这个写完之后,那大家知道它会有什么样的一个效果吗?因为咱们的分页咱们已经实现的,用分页插件来实现的,对吧,所以说我们现在咱们来一个重新部署之后啊,然后我们当前咱们的页面里面,它应该来展示的是因为现在默认访问的是第一页嘛,大家看一下,所以说他应该来展示的是我们当前员工表里面的前四条数据,知道吧,好。
17:01
来下面咱们在这儿来刷新,好,然后我们来访问咱们的这一个超链接,点击之后大家来看啊,你看是不是只有四条数据对吧?好,然后我们可以来改变我们当前所访问的页码,来展示其他的数据啊,比如说这咱们来写个二,然后一个回撤,大家看数据是不是就变了,因为咱们刚才第一页的时候,这里面第一条员工信息,他的员工姓名是AAA,对不对?好,然后再往下看三对吧,然后再往下,然后四是不是,然后咱们一共有几页,大家想一下,咱们一共30条数据,每页来显示几条啊,每页来显示四条的话,那四七二十八,那所以说咱们是不是应该一共有八页,对不对,然后第八页的话,是不是应该来展示的只有几条数据啊,两条数据。能看懂吧,但是咱们肯定不能这样啊,你肯定不能说在下面写个tips对不对,说如果要访问其他页码,请手动在地址栏里面拼接,这肯定不行,那我们是不是要把我们当前咱们分页相关的超链接给设置出来,对不对,好啊行,下面呢,那咱们就把这个超链接来写一下。
我来说两句