[英]Spring Pagination and count query
我正在開發一個 REST API 管理Module
對象。 對於 UI,我需要分頁和總頁數。
我知道當 Spring 使用Page<T>
時,會使用額外的計數查詢(以獲取總頁數),這是一項間接費用。
我需要 UI 的總頁數。 但只有一次(不需要為每個新頁面再次執行計數查詢)。
所以我在考慮公開兩個端點:
List<Module>
而不是Page<Module>
因為我不想為每個頁面請求執行這個額外的計數查詢)是這樣的:
@RestController
@RequestMapping("/api/modules")
public class ModuleApi {
private final ModuleService service;
@GetMapping("/count")
public Long count() {
return service.countModules();
}
@GetMapping
public List<Module> find(
@RequestParam("name") String name ,
@RequestParam(value = "page", required = false, defaultValue = "0") Integer page,
@RequestParam(value = "size", required = false, defaultValue = "10") Integer size
) {
return service.find(PageRequest.of(page, size));
}
}
這是一個好的設計嗎?
計數一次意味着您的計數將隨着更多模塊插入您的數據庫而過時,在這種情況下計數不再相關。
更好的設計是使用 spring 的Slice<Module>
,完全忘記計數,並在前端實現解決方案。 想一想某些網站如何僅在您位於頁面底部時才能為您帶來更多結果。
然而,這可能會在您的架構上花費大量的精力和時間,因此您的建議應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.