标准(Criteria)API是构建实体及其持久状态查询的最常用方法之一。 它只是定义JPA查询的另一种方法。
Criteria API定义了一个独立于平台的条件查询,用Java编程语言编写。 它是在JPA 2.0中引入的。 这背后的主要目的是提供一种类型安全的方式来表达查询。
要创建标准查询,请按照以下步骤操作: -
第1步: 通过在EntityManager
接口实例上调用getCriteriaBuilder()
方法创建CriteriaBuilder
接口的对象。
EntityManager em = emf.createEntityManager(); CriteriaBuilder cb=em.getCriteriaBuilder();
第2步: 构建一个CriteriaQuery
接口的实例来创建一个查询对象。
CriteriaQuery<StudentEntity> cq=cb.createQuery(StudentEntity.class);
第3步: 从CriteriaQuery
对象的方法调用来设置查询根。
Root<StudentEntity> stud=cq.from(StudentEntity.class);
第4步: 调用CriteriaQuery
对象的select()
方法来指定查询结果的类型。
CriteriaQuery<StudentEntity> select = cq.select(stud);
第5步: 创建Query
接口的实例并指定用于访问数据库记录的方法的类型。
Query q = em.createQuery(select);
第6步: 通过调用查询接口的方法来控制查询的执行。
List<StudentEntity> list = q.getResultList();
以下是相应接口和方法的子句列表。
子句 | Criteria API接口 | 方法 |
---|---|---|
SELECT | CriteriaQuery | select() |
FROM | AbstractQuery | from() |
WHERE | AbstractQuery | where() |
ORDER BY | CriteriaQuery | orderBy() |
GROUP BY | AbstractQuery | groupBy() |
HAVING | AbstractQuery | having() |
注意:
CriteriaQuery
接口是AbstractQuery
接口的子接口。