JPA的分页技术实现:Page与Pageable

例子
JPA的分页技术实现:Page与Pageable_第1张图片
1.设置倒排序

Sort sort = new Sort(Sort.Direction.DESC, "id");

2.根据start,size和sort创建分页对象

Pageable pageable = new PageRequest(start, size, sort);

3.CategoryDAO根据这个分页对象获取结果page.

Page<Category> page =categoryDAO.findAll(pageable);

Pageable 是Spring Data库中定义的一个接口,该接口是所有分页相关信息的一个抽象,通过该接口,我们可以得到和分页相关所有信息(例如pageNumber、pageSize等),这样,Jpa就能够通过pageable参数来得到一个带分页信息的Sql语句。

Pageable定义了很多方法,但其核心的信息只有两个:

一是分页的信息(page、size)
二是排序的信息。Spring Data Jpa提供了PageRequest的具体实现

Page 接口如下:

public interface Page<T> extends Iterable<T> {
 
    int getNumber();			//当前第几页   返回当前页的数目。总是非负的
 
    int getSize();				//返回当前页面的大小。包括表头信息之类
 
    int getTotalPages();         //返回分页总数。
 
    int getNumberOfElements();   //返回当前页上的元素数。
 
    long getTotalElements();    //返回元素总数。
 
    boolean hasPreviousPage();  //返回如果有上一页。
 
    boolean isFirstPage();      //返回当前页是否为第一页。
 
    boolean hasNextPage();      //返回如果有下一页。
 
    boolean isLastPage();       //返回当前页是否为最后一页。
 
    Iterator<T> iterator();
 
    List<T> getContent();     //将所有数据返回为List
 
    boolean hasContent();     //返回数据是否有内容。
 
    Sort getSort();          //返回页的排序参数。
}

你可能感兴趣的:(springboot,spring,java,spring)