簡體   English   中英

如何以正確的方式使查詢Spring數據JPA多條件?

[英]How to make query Spring data JPA multi condition with proper way?

我試圖在JPA中進行查詢,而沒有重復條件和變量:

List<User> findByNameContainingIgnoreCaseAndEnabledOrUsernameContainingIgnoreCaseAndEnabledOrEmailContainingIgnoreCaseAndEnabledOrAgency_NameContainingIgnoreCaseAndEnabled
(String name, boolean status1, String username,boolean status2, String email, boolean status3,String agencyName, boolean status, Pageable pageable);

我不確定我的方式是否正確。 但是很難讀。

實現此目的的最佳方法不是在spring-data中使用方法擴展方法來構造實際查詢,而是在這種情況下使用@Query注釋:

@Query(value = "SELECT ...")
List<User> findUsersByParams(
  @Param("name") String name,
  @Param("status1") boolean status1,
  @Param("username") String username,
  @Param("status2") boolean status2, 
  @Param("email") String email, 
  @Param("status3") boolean status3,
  @Param("agencyname") String agencyName, 
  @Param("status") boolean status, 
  Pageable pageable);

這里的關鍵是@Query批注中的value屬性采用一個JPQL查詢,該查詢定義了一系列命名參數,並且每個@Param注釋的方法值都與那些查詢命名參數匹配並自動為您注入。

一個簡單的例子是

@Query(value = "SELECT u FROM User u " +
       "WHERE u.userName LIKE CONCAT('%', :userName, '%')")
List<User> findUsersByParams(@Param("userName") String userName, Pageable page);

暫無
暫無

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

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