spring data jpa對於分頁以及排序的查詢也有著完美的支援,通過pageable
來對資料庫進行分頁查詢。
介面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/
頁面,我們將看到如下結果:
,,,
,,,,
,,,,
,,,],
"last":false,
"totalpages":9,
"totalelements":123,
"size":15,
"number":0,
"first":true,
"sort":,
"numberofelements":15
}
通過查詢結果,我們可以知道: SpringData JPA分頁查詢
首先我們需要知道springdata jpa 的幾個介面 其實看名字就大概懂了,也可以很方便的使用 首先我們的持久化層繼承jparepository,相當於繼承了增刪改查的持久化層以及分頁查詢的持久化層 所以如果我們要使用分頁查詢 我們只需要直接呼叫 由一開始的圖也可以看到pageable的其中乙個...
Spring Data JPA 分頁和排序
jpa的基本使用方法在如何使用jpa訪問關係型資料庫已經介紹過,我們暫且跳過,這裡我們直接來看介面blogrepository的定義 public inte ce blogrepository extends pagingandsortingrepository 我們可以看到,blogreposit...
spring Data Jpa的分頁管理
通過jpa大大簡化了我們對資料庫的開發工作。但是,之前的例子中我們只提到了最簡單的crud 增刪改查 操作。實際上,spring data jpa對於分頁以及排序的查詢也有著完美的支援,接下來,我們來學習如何通過pageable來對資料庫進行分頁查詢。一 pageable 是spring data庫...