JPA查詢:如何過濾條件為null的查詢條件
問題:JPA不會自動過濾為null的查詢條件;
解決方案:
方案一:調用JPA之前判斷,寫多個查詢方法;
方案二:利用原生sql 加 if的方式實現參數為空不作為查詢條件;
例如:
@Query(value = "select * from user where is_identification = 1 and is_inter_identification = 1 and if(?1 !='',mobile=?1,1=1) and if(?2 !='',nick=?2,1=1)",nativeQuery = true) List<User> findBySearch(String mobile,String nick);
注意:if(?1 !='',x1=?1,1=1) 代表傳入的參數X1如果不為""(Spring類型空是""而不是null)。
思考:傳入值null,需要用""判斷;如果是真的""空字符串,又如何判斷呢?
還有其他更好的解決方案,望大神留言,感激!!!!