Spring Data JPA 分頁和排序

2021-09-14 00:50:42 字數 2178 閱讀 3822

jpa的基本使用方法在如何使用jpa訪問關係型資料庫已經介紹過,我們暫且跳過,這裡我們直接來看介面blogrepository的定義:

public inte***ce blogrepository extends pagingandsortingrepository

我們可以看到,blogrepository定義了這樣乙個方法:pagefindbydeletedfalse(pageable pageable);,我們主要關注它的引數以及返回值。

spring data jpa除了會通過命名規範幫助我們擴充套件sql語句外,還會幫助我們處理型別為pageable的引數,將pageable引數轉換成為sql'語句中的條件,同時,還會幫助我們處理型別為page的返回值,當發現返回值型別為page,spring data jpa將會把資料的整體資訊、當前資料的資訊,分頁的資訊都放入到返回值中。這樣,我們就能夠方便的進行個性化的分頁查詢。

pageable只是乙個抽象的介面,那麼,家下來我們學習如何獲得pageable物件。

pageable定義了很多方法,但其核心的資訊只有兩個:一是分頁的資訊(page、size),二是排序的資訊。spring data jpa提供了pagerequest的具體實現,我們只提供分頁以及排序資訊即可:

public pagegetentrybyparams(@requestparam(value = "page", defaultvalue = "0") integer page,

@requestparam(value = "size", defaultvalue = "15") integer size)

在這裡,我們通過引數獲得分頁的資訊,並通過sort以及direction告訴pageable需要通過id逆序排列。

這裡可以看到,通過引數來得到乙個pageable物件還是比較繁瑣的,當查詢的方法比較多的時候,會產生大量的重複**。為了避免這種情況,spring data提供了直接生成pageable的方式。

public pagegetentrybypageable(@pageabledefault(value = 15, sort = , direction = sort.direction.desc)

pageable pageable)

我們可以看到,我們只需要在方法的引數中直接定義乙個pageable型別的引數,當spring發現這個引數時,spring會自動的根據request的引數來組裝該pageable物件,spring支援的request引數如下:

這樣,我們就可以通過url的引數來進行多樣化、個性化的查詢,而不需要為每一種情況來寫不同的方法了。

通過url來定製pageable很方便,但唯一的缺點是不太美觀,因此我們需要為pageable設定乙個預設配置,這樣很多情況下我們都能夠通過乙個簡潔的url來獲取資訊了。

spring提供了@pageabledefault幫助我們個性化的設定pageable的預設配置。例如@pageabledefault(value = 15, sort = , direction = sort.direction.desc)表示預設情況下我們按照id倒序排列,每一頁的大小為15。

最後,讓我們進入程式的根目錄,執行命令mvn spring-boot:run將web應用啟動起來,啟動完成後,訪問[http://localhost:8080/](http://localhost:8080/)頁面,我們將看到如下結果:

,,,

,,,,

,,,,

,,,],

"last":false,

"totalpages":9,

"totalelements":123,

"size":15,

"number":0,

"first":true,

"sort":,

"numberofelements":15

}

通過查詢結果,我們可以知道:

怎麼樣,資訊是不是很豐富,**是不是很簡單,快點來嘗試一下jpa的分頁查詢吧。

SpringData JPA分頁查詢

首先我們需要知道springdata jpa 的幾個介面 其實看名字就大概懂了,也可以很方便的使用 首先我們的持久化層繼承jparepository,相當於繼承了增刪改查的持久化層以及分頁查詢的持久化層 所以如果我們要使用分頁查詢 我們只需要直接呼叫 由一開始的圖也可以看到pageable的其中乙個...

Spring Data Jpa 分頁 排序查詢

spring data jpa對於分頁以及排序的查詢也有著完美的支援,通過pageable來對資料庫進行分頁查詢。介面blogrepository的定義如下 public inte ce blogrepository extends pagingandsortingrepository blogre...

spring Data Jpa的分頁管理

通過jpa大大簡化了我們對資料庫的開發工作。但是,之前的例子中我們只提到了最簡單的crud 增刪改查 操作。實際上,spring data jpa對於分頁以及排序的查詢也有著完美的支援,接下來,我們來學習如何通過pageable來對資料庫進行分頁查詢。一 pageable 是spring data庫...