天天看點

SpringBoot+JPA 運用生成的查詢語句做複雜查詢的方法

項目中碰到了一個比較棘手的查詢操作,封裝的各種方法都用不上,于是隻能動态生成查詢語句後再做查詢,結果生成的是sql語句在Repository層面方法中作為形參傳入,結果發現根本不行,于是改用生成JPQL語句用EntityManager建立Query進行查詢,方法如下:

首先注入

@PersistenceContext
private EntityManager entityManager;      

導包如下

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;      

然後

Query query2 = entityManager.createQuery(sql2);//sql2為動态生成的查詢語句,一定要遵循JPQL規範,不是sql
query2.setFirstResult(start);//分頁用起點
query2.setMaxResults(size);//分頁用記錄條數
List<Object[]> lists2 = query2.getResultList();//查詢結果輸出      

這樣查詢就完成了,如果遇到傳回前台的值沒有key,或者其他問題,可以看我上篇文章!