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

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

咱們只須要重寫這個方法便可,相關知識請自行查閱JPA Criteria查詢 spring

過濾條件sql

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

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

3:CriteriaBuilder也做爲Predicate實例的工廠,經過調用CriteriaBuilder 的條件方法( equal,notEqual, gt, ge,lt, le,between,like等)建立Predicate對象。ide

4:複合的Predicate 語句能夠使用CriteriaBuilder的and, or andnot 方法構建。post

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

Article:spa

User:code

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

封裝的查詢實體SearchArticle

下面是查詢方法

其中的 ArticleRepository接口以下,spring data jpa不須要你本身實現dao的接口

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

相關文章
相關標籤/搜索