[英]Apply filter on Page objects
我正在構建一個可以接受“ / search”請求多個參數的API,以便可以使用findAll(Example<T> example)
過濾結果。 在第二階段中,我過濾了非平凡類型( Date
)以縮小結果范圍,這很好。
現在,在我要實現分頁的地方出現了問題。 Spring數據提供了findAll(Example<T> example, Pageable page)
方法,該方法為我創建了一個Page<T>
元素,該元素不再適用於我的過濾機制。 盡管Page<T>
提供了.filter(Predicate p)
函數,但這會將我的Page轉換為Streamable,這不是我需要的分頁。
如何進一步過濾Page<T>
對象,而不會導致意外的數據格式呢?
通過首先過濾沒有分頁信息的結果集,然后應用提交的分頁參數,我解決了該問題。
int startIndex = page * size;
int endIndex = (startIndex + size) > myList.size() ? myList.size() : (startIndex + size);
JsonPage<>(myList.subList(startIndex, endIndex), PageRequest.of(page, size), myList.size());
這比創建頁面對象並將其解包以獲取可過濾對象更加直觀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.