1. 程式人生 > >SpringBoot jpa多條件查詢(引數可能為空)語句

SpringBoot jpa多條件查詢(引數可能為空)語句

@Query(value = "select * from xxx where if(?1 !='',x1=?1,1=1) and if(?2 !='',x2=?2,1=1)" +
            "and if(?3 !='',x3=?3,1=1)  ",nativeQuery = true)
     List<XXX> find(String X1,String X2,String X3);

工作的時候需求有搜尋功能,有三個引數,但是網上找了很多關於jpa多條件查詢的程式碼要麼在調dao的時候用了大量if判斷,那麼需要寫很多查詢方法,要麼說的不知所云,我結合jpa和mysql原語句研究了半天才弄出了這個方法。

xxx是資料庫表名,x1、x2、x3為查詢的欄位名。

下面的大寫的XXX是實體類的名,X1X2X3為查詢的引數。

if(?1 !='',x1=?1,1=1) 代表傳入的引數X1如果不為""(Spring型別空是""而不是null)將引數傳入x1,如果為空時顯示1=1 代表引數為真,對查詢結果不產生作用。