[英]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.