標(biāo)準(zhǔn)(Criteria)API是構(gòu)建實(shí)體及其持久狀態(tài)查詢的最常用方法之一。 它只是定義JPA查詢的另一種方法。
Criteria API定義了一個(gè)獨(dú)立于平臺(tái)的條件查詢,用Java編程語言編寫。 它是在JPA 2.0中引入的。 這背后的主要目的是提供一種類型安全的方式來表達(dá)查詢。
要?jiǎng)?chuàng)建標(biāo)準(zhǔn)查詢,請(qǐng)按照以下步驟操作: -
第1步: 通過在EntityManager
接口實(shí)例上調(diào)用getCriteriaBuilder()
方法創(chuàng)建CriteriaBuilder
接口的對(duì)象。
EntityManager em = emf.createEntityManager();
CriteriaBuilder cb=em.getCriteriaBuilder();
第2步: 構(gòu)建一個(gè)CriteriaQuery
接口的實(shí)例來創(chuàng)建一個(gè)查詢對(duì)象。
CriteriaQuery<StudentEntity> cq=cb.createQuery(StudentEntity.class);
第3步: 從CriteriaQuery
對(duì)象的方法調(diào)用來設(shè)置查詢根。
Root<StudentEntity> stud=cq.from(StudentEntity.class);
第4步: 調(diào)用CriteriaQuery
對(duì)象的select()
方法來指定查詢結(jié)果的類型。
CriteriaQuery<StudentEntity> select = cq.select(stud);
第5步: 創(chuàng)建Query
接口的實(shí)例并指定用于訪問數(shù)據(jù)庫記錄的方法的類型。
Query q = em.createQuery(select);
第6步: 通過調(diào)用查詢接口的方法來控制查詢的執(zhí)行。
List<StudentEntity> list = q.getResultList();
以下是相應(yīng)接口和方法的子句列表。
子句 | Criteria API接口 | 方法 |
---|---|---|
SELECT | CriteriaQuery | select() |
FROM | AbstractQuery | from() |
WHERE | AbstractQuery | where() |
ORDER BY | CriteriaQuery | orderBy() |
GROUP BY | AbstractQuery | groupBy() |
HAVING | AbstractQuery | having() |
注意:
CriteriaQuery
接口是AbstractQuery
接口的子接口。