簡體   English   中英

Spring Data JPA應用排序,分頁以及where子句

[英]Spring Data JPA apply sorting, pagination along with a where clause

我目前正在使用Spring JPA並使用此處所述的排序和分頁 -

如何通過Spring數據JPA通過排序和分頁來查詢數據?

現在我的問題是如何在這里應用'where'子句?

例如

where PRODUCT_NAME='abc';

只需在存儲庫界面中創建一個查詢方法即可。

這里看看文檔。

使用paging和where子句添加查詢方法。

Page<User> findByLastname(String lastname, Pageable pageable);

因此,您可以通過屬性“lastname”找到User並配置分頁設置。

我能找到的最簡單的方法是使用QueryDSL或規范 我更喜歡QueryDSL。

要獲取Spring Data JPA應用排序,分頁以及where子句檢查下面的代碼

  1. 實體類

     @Entity @Table(name = "users") Public Class User{ private String name; private Integer id; private String email; // add required setter getter// } 
  2. 存儲庫類

     @Repository("userRepository") @Transactional` public interface UserRepository extends JpaRepository<User, Integer>{ } 
  3. 服務層使用Example對象傳遞where子句,並使用Pagable和Sort Class將Pagination + Sorting一起傳遞。 我們將在控制器中實現Pageable以注入排序邏輯,然后將該Pagable對象傳遞給服務層。

      @Service Public class UserService{ public Page<User> getUserListPaginated(`EXAMPLE<User>` searchTerm, Pageable pageable) { return userRepo.findAll(searchTerm,pageable); } } 

Example<T>如果其值為null,則不接受該屬性。 因為我在Entity類中使用了Integer id,因為我可以為第一次調用設置它的值null

  1. 現在控制器類

     @Controller Public class UserController{ @Autowired UserService userService; @GetMapping("/users") public String users(Model model,@RequestParam(value="page",defaultValue = "0") Integer pageNumber, @SortDefault(sort = "name", direction = Sort.Direction.ASC) Sort sort){ Pageable pageable = PageRequest.of(pageNumber,10, sort); Example<User> searchTerm = Example.of(new User()); Page<User> userList = userService.getUserListPaginated(searchTerm, pageable); } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM