首先JPA规定了可以通过传入pageable对象来查询分页数据,返回类型为Page<T>

Page<T>带有附加信息的Slice,例如结果的总数。需要一个Pageable方法参数。

它官网的原话是

Page<T>

A page is a sublist of a list of objects.

我的理解就是相当于一个list容器,用来存储JavaBean

它继承了这些父接口

Iterable<T>, Slice<T>, Streamable<T>, Supplier<Stream<T>>

其中最重要的就是 Slice<T>这个接口,他有下面这样一个接口函数

List<T>getContent()

Returns the page content as List.

这意味着你可以通过getcontent的方法来获得Page对象中对应的list,也就是可以像对普通list一样来操作他。当然还可以调用slice的许多函数,例如getnumber()获取当前页等等。

Page对象讲完了。

那么这个pageable对象呢?

Pageable

Abstract interface for pagination information.

也就是说它是对分页属性的描述。

它有一些继承这个接口的Javabean,其中最重要的就是AbstractPageRequest,这是一个抽象javabean继承

public abstract class AbstractPageRequest
extends Object
implements Pageable, Serializable

Abstract Java Bean implementation of Pageable.

而AbstractPageRequest的构造器:

AbstractPageRequest(int page, int size)

Creates a new AbstractPageRequest.

这意味着你可以通过指定page(当前页码),size(分页大小)来控制Pageable的属性。所以当你在spring或者springboot的前端想要传递分页信息的时候,你可以传递page,size的值,spring会自动帮你封装成pageable对象想后端传递。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐