Spring-Data-JPA的setMaxResults註解
Spring-Data-JPA,一個強大的JPA儲存庫抽象化庫,簡化了Spring中的資料存取基於Java的應用程式。然而,使用註解設定查詢傳回的最大結果數一直是個挑戰。
Spring Data JPA 1.7.0 (Evans Release Train) 解決方案
中Spring Data JPA 1.7.0 及更高版本中,情況有所改善。現在您可以使用 Top 和 First 關鍵字來限制查詢結果。例如:
findTop10ByLastnameOrderByFirstnameAsc(String lastname);
Spring Data 會自動將回傳結果的數量限制為指定數量(如果省略,則預設為 1)。結果的排序變得至關重要,無論是透過 OrderBy 子句還是方法中的 Sort 參數。
在 Spring Data JPA 1.7.0 之前
在此增強之前,檢索資料切片需要使用分頁。 Spring Data 使用 Pageable 介面進行分頁請求,並使用 Page 抽象進行結果處理。
實作儲存庫介面如下:
public interface UserRepository extends Repository<User, Long> { List<User> findByUsername(String username, Pageable pageable); }
使用此介面取得結果:
Pageable topTen = new PageRequest(0, 10); List<User> result = repository.findByUsername("Matthews", topTen);
如果需要情境訊息,請使用Page 作為回傳類型:
public interface UserRepository extends Repository<User, Long> { Page<User> findByUsername(String username, Pageable pageable); }
客戶端程式碼可以利用此資訊:
Pageable topTen = new PageRequest(0, 10); Page<User> result = repository.findByUsername("Matthews", topTen); Assert.assertThat(result.isFirstPage(), is(true));
使用Page 作為返回type 觸發計數投影查詢執行以確定元素的總數。此外,為了確保穩定的結果,請務必在 PageRequest 中包含排序資訊。
以上是如何在 Spring Data JPA 中使用註解限制查詢結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!