jpa如何根据条件分页查询
时间: 2023-05-10 13:50:31 浏览: 128
在JPA中,我们可以使用Criteria API来构建动态查询,并且根据条件进行分页查询。
首先,我们需要创建一个CriteriaBuilder对象来构建查询条件。然后使用Root对象来指定查询的实体类和表。接着,使用Predicate对象来设置查询条件,可以使用各种逻辑操作符(包括AND、OR、NOT),比如:
```
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Customer> query = cb.createQuery(Customer.class);
Root<Customer> root = query.from(Customer.class);
Predicate condition = cb.and(cb.equal(root.get("name"), "张三"), cb.equal(root.get("age"), 20));
```
以上代码表示根据名字等于"张三"并且年龄等于20进行查询。接下来,我们需要将条件添加到查询中,并且指定查询的排序方式:
```
query.select(root).where(condition);
query.orderBy(cb.asc(root.get("name")), cb.desc(root.get("age")));
```
以上代码表示将查询结果按照名字升序排列,年龄降序排列。最后,我们需要指定查询的分页信息,比如:
```
TypedQuery<Customer> typedQuery = em.createQuery(query);
typedQuery.setFirstResult(0);
typedQuery.setMaxResults(10);
List<Customer> resultList = typedQuery.getResultList();
```
以上代码表示查询结果从第1条开始,查询10条记录。这样,我们就可以使用JPA进行条件分页查询。
阅读全文