CriteriaBuilder类是JPA Criteria API中最重要的类之一,它用于构建查询,排序和复杂条件。
CriteriaBuilder类中包含了众多方法,我们将逐一介绍这些方法并提供详细的代码说明。
1. createCriteriaQuery():创建CriteriaQuery对象,表示一个查询。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery
```
2. createTupleQuery():创建TupleQuery对象,用于返回结果集的Tuple形式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery
```
3. createQuery():创建Query对象,用来执行查询。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery
Query
```
4. createPredicate():创建Predicate对象,表示一个条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.equal(root.get("name")
"John");
```
5. conjunction():创建一个AND组合的Predicate。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.conjunction();
```
6. disjunction():创建一个OR组合的Predicate。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.disjunction();
```
7. greaterThan():创建一个大于的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.greaterThan(root.get("age")
30);
```
8. greaterThanOrEqualTo():创建一个大于等于的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.greaterThanOrEqualTo(root.get("age")
30);
```
9. lessThan():创建一个小于的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.lessThan(root.get("age")
30);
```
10. lessThanOrEqualTo():创建一个小于等于的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.lessThanOrEqualTo(root.get("age")
30);
```
11. equal():创建一个等于的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.equal(root.get("name")
"John");
```
12. notEqual():创建一个不等于的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.notEqual(root.get("name")
"John");
```
13. isNull():创建一个为NULL的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.isNull(root.get("name"));
```
14. isNotNull():创建一个不为NULL的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.isNotNull(root.get("name"));
```
15. like():创建一个LIKE的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.like(root.get("name")
"%John%");
```
16. or():创建一个OR条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.or(pred1
pred2);
```
17. and():创建一个AND条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.and(pred1
pred2);
```
18. between():创建一个BETWEEN的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.between(root.get("age")
20
30);
```
19. exists():创建一个EXISTS的条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Subquery
Root
sq.select(cb.count(subRoot));
sq.where(cb.equal(subRoot.get("name")
root.get("department")));
Predicate condition = cb.exists(sq);
```
20. not():创建一个NOT条件表达式。
```java
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
Predicate condition = cb.not(pred);
```
以上就是CriteriaBuilder类中的一些常用方法,这些方法可以帮助我们构建各种复杂的查询条件,使得JPA Criteria API更加强大和灵活。通过这些方法的组合和嵌套,我们可以实现几乎任何类型的查询需求。