00:00
下面呢,我们来说一下这个pageing and sorting reportsity,一看这个名字就知道它应该是跟分页和排序相关的reportsry,对吧?我们打开我们的eclipse,我们来看一下接口之间的集成关系,CTRLT。选中control t,我们看到这个page and sorting reposity实际上就是CD reposity的一个子接口。点进来。Outline里边有两个方法。重载的哈都叫find out,那么第一个呢,需要传入一个salt进来,它返回了一个it rain,所以说这应该是跟排序相关的一个方法。第二个传入了一个pageable,返回一个配置,那它应该是跟翻页相关的一个方法,对吧,那实际上后边我们会知道,我传这个payable里边可以包含这个salt。就是这个里边可以包含这个排序信息,所以说我们测试的话,我们测试这一个方法就可以了。
01:06
那我现在呢?我让我这个CD reposity改为piging and sorting reposity control o。因为现在我这个翻页和排序它是一个只读操作,所以说我们在person report这个基础上测试就可以了,而不需要在上边再去打扰那个service,对吧?我们看一下我们的数据表,目前数据表里边这个ID呢,是从27开始到52,这个一会儿我们测试的时候不是特别方便,我们把这个表给它删除。这个记录呢,我重新的给他建一下,刚才我们测过一个方法,就这个方法是吧,跑一下。F5,刷新看一下我们的person OK,这个时候这个ID呢,是从一到26,这个时候我们一会我们分页的时候看这个ID会看的更清楚一些,好了,现在的话呢,我们就开始进行测试。
02:16
在这儿,Public VO test and sortingy。At test。我要调person rest find all方法需要传入一个payable是吧?Able返回一个page。传入一个pig。我们注意到这个pageable实际上是一个接口,那这个接口的话呢,是用不了的是吧,我们看一看CTRLT,它有一个实现类叫page request,你看page request什么意思啊。
03:09
请求页页的请求,那这里边儿实际上就封装了我们分页时需要传入的一些信息,当前第几页,每页多少条记录,以及分页的信息,所以说我们实际上用的话呢,我们用这个配置request就可以了。那。测试代码在。好了,我直接来配置request。New que这里边呢,我们可以传入两个信息,Page跟size int page number等于3t page page size等于五。
04:00
把这个传入。配number,配置size,我们写一个哈page接口。通常使用的是其page request实现类。其中。封装了需要分页的信息,需要分页的信息什么呀,像page number啦,Page size啦,这里边进行封装,OK,那这个返回值呢,应该是一个配置。泛型,我们返回的是percentage等于。好,写好之后的话,我们要测试一下out配置,点get。总的记录数,Total elements。
05:01
总记录数。再来set out配置,点get number,这个指的是什么呀?当前页的页码,当前第几页?Out配置点get。Pages种业处。还有哪个是比较常用的out配置点get?Content,当前页面的content。当前页面的list是吧?Content这个返回值类型是一个list,没问题,Sit out配置点get,还有一个number of elements,当前页面有多少条记录?
06:14
当前页面的记录数。当前页面的记录数好的。注意我们是第三页五条记录,按照我们这个要求,第三页的话应该是11~15吧,看一看效果,走起。诶,我们看到总记录数是26,当前是第三页,总共是六页,没问题吧,因为我一页是显示五条记录,然后呢,当前记录是五,不过这个是第16,诶刚才不说每页五条记录的话,第三页是从十一开始吗?而这个是从16开始,这说明它这个配置number是从零开始吧,是不是配置number从零开始,所以说这个第三页应该是三减一,这回就对了。
07:19
这看效果。哎,这个时候的话呢,这个是11,不过当前页的页码应该。加一。好的,哎,这就是我们整个分整个分页的这个效果,那我要是想显示第六页呢,这块我们要写一个六。再走。第六页应该只有哦。一条记录失败,一条记录第六页26没问题。这就是我们使用。
08:01
Ping and sorting reposity进行分页的基本方式,我们感觉是不是非常简单呢?直接传入一个。配置request这里面封装了。Page number跟page size,然后调这个方法既可以返回你需要的page。好吧。好的,下边的话呢,我们再来看一下这个排序相关的。在这儿吧。排序相关。什么意思呢?我实际上在创建这个对象的时候,可以传一个什么呀,是不是可以传一个salt进去啊。好了,我们研究一下这个。这不是一个接口,这就是一个salt,等于now OK。
09:04
说。Salt封装了排序的信息salt封装了排序的信息,好,我们研究一下吧,New thought。我们看到这个里边呢,可以传入多个order。看到了吧,可以传多个order,那第一个是个集合,第二个呢,实际上是一个order的一个可变参数吧,我们使用这个第二种方式,我写个order,一再写个order to,然后的话呢,我们再看order。注意看哈,这个order有好多,我们应该用spring data里边的ORDER1等于new order这里边有。两个参数可以传,第一个direction,升序还是降序,第二个property,按哪个属性进行升序还是降序?Direct direction点,比方说我这个是按ID降序,再来一个order order two等于new order。
10:17
点asc。然后呢,我按email进行升序。OK,搞定,我们看一下结果,这个结果本身呢,呃,意义不大,因为我这个怎么了,我这个ID这个顺序跟email这个顺序是一样的,但我们我们可以看什么呀,我们可以看那个SQL语句。找一个。大家看这个哈。Idd email对吧,然后后边是一个limit,这就是我们排序的方式。
11:02
是具体针对于某一个属性进行。升序还是降序,看到了吧,哎,这就是我们翻页的这个方法,我们再简单的总结一下。这里边API有一个salt,这个salt里边可以包含多个order,每一个order有两个属性,升序还是降序,按哪一个属性进行排序,然后呢,我可以来创建一个page request,包含三个属性,Page number page size跟thought。我把这个。Page request网。And sorting reporty放到奥巴马里边一传的话,分页就搞定了,我们感觉这个分页是不是非常的简单呢?
我来说两句