JPA的分頁技術實現:Page與Pageable
阿新 • • 發佈:2021-02-08
技術標籤:springbootspringjavaspring
例子
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(); //返回頁的排序引數。
}