# 六角鼠年鐵人賽 Week 29 - Spring Boot - Spring Data & JPA Paging ==大家好,我是 "為了拿到金角獎盃而努力著" 的文毅青年 - Kai== ## Lyndsey Scott :::info Coding is for anyone ::: ## 主題 前幾篇說明了 JPA 中我們可以利用 JPQL 做到較簡易的 Query 處理,也可以透過 QueryDSL 做更複雜 Query 的組成。 那這篇就來介紹一個網頁常用的功能:分頁 雖然在前端有許多套件已經可以高效率實現資料分頁的功能,如: DataTable.js、或原生 JS 的方式。 但對於大流量的網站,如電商、遊戲、政府資訊公告等,可能發個新消息、新活動、上些新商品就會吸引人潮,前端部分的處理都是針對全資料再去做分頁,這其實對上述類型的網站會非常傷,因此還是有必要只截取需要的資料。 而這個必要就是後端處理分頁功能的能力。 ## 分頁參數 要達到分頁功能,首先會需要前端準備三個參數送至後端,那就是:**分頁資料的對象、起始筆、顯示多少資料** 等三個參數 - **分頁資料的對象**: 讓後端知道現在該抓的資料來源為何,可以透過 URL 方式消去 - **起始筆**: 依照每次分頁之後的起始筆 - **顯示多少資料**: 每次使用多少筆進行分頁,可以透過不提供前端選項的方式進行參數固定化 ## Order And ID 在進行分頁功能處理的時候,另外幾個重要的參數 (但也有可能不重要),便是資料的 ID 與 排序功能的處理。 當然在一些狀況下: 前端不提供排序選項、資料為完整回傳到前端情況下就不需要針對 Order 與 ID 做處理。 Kai 這邊以電商舉例,通常在搜索介面都會提供許多的排序選項: 依照價格高 -> 低、消費者近期喜愛程度、上架日期新 -> 舊等等。 那 ID 的部份則可能使用資料原先就有的 ID 為主,不一定是為了做排序的依據,而是在於保持資料的獨立性 (好吧...我可能在說廢話XD)。 ## Pageable 在 Spring Data & JPA 中,可以透過 Pageable 物件進行頁與筆數的控制,比起過往的起始筆與顯示多少資料來說相對簡單。 開發人員不需要在意總筆數是多少,只需要接收對應的頁與顯示筆數的參數即可。 總筆數與頁數的控制則交由前端去處理。 ## 結語 :::danger 簡單介紹一下 Paging 的功能,下篇就來進行一些 Paging 的實作分享~ [六角鼠年鐵人賽 Week 30 - Spring Boot - Spring Data & JPA Paging 範例](/t2ai6DgrRs2P_8jDIkfNXg) ::: 首頁 [Kai 個人技術 Hackmd](/2G-RoB0QTrKzkftH2uLueA) ###### tags: `Spring Boot`,`Spring Data`,`w3HexSchool`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up