Spring data JPA中使用Specifications動態構建查詢


有時我們在查詢某個實體的時候,給定的條件是不固定的,這是我們就需要動態 構建相應的查詢語句,在JPA2.0中我們可以通過Criteria接口查詢,JPA criteria查詢.相比JPQL,其優勢是類型安全,更加的面向對象.而在Spring data JPA中相應的接口是JpaSpecificationExecutor,這個接口基本是圍繞着Specification接口來定義的。 Specification接口中只定義了如下一個方法:

我們只需要重寫這個方法即可,相關知識請自行查閱JPA Criteria查詢 

過濾條件

1:過濾條件會被應用到SQL語句的FROM子句中。在criteria 查詢中,查詢條件通過Predicate或Expression實例應用到CriteriaQuery對象上。

2:這些條件使用 CriteriaQuery .where 方法應用到CriteriaQuery 對象上

3:CriteriaBuilder也作為Predicate實例的工廠,通過調用CriteriaBuilder 的條件方法( equal,notEqual, gt, ge,lt, le,between,like等)創建Predicate對象。

4:復合的Predicate 語句可以使用CriteriaBuilder的and, or andnot 方法構建。

相關代碼如下,在這個例子中我們定義了2個類Articel和User類

Article:

User:

其中user和article是一對多的關系,是單向的

封裝的查詢實體SearchArticle

下面是查詢方法

其中的 ArticleRepository接口如下,spring data jpa不需要你自己實現dao的接口

通過以上的步驟,我們就能構建相應的查詢sql了,使用這個接口要對JPA2.0中Criteria查詢有一定的了解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM