JPA - Criteria Query - 使用 "like" 搜索整数
Criteria queries 是一种查询方法,用于在 Java 持久化(JPA)领域中从实体类中检索对象。使用 CriteriaQuery,您可以使用类似 SQL 的语法来构建查询,以便从 JPA 持久化对象中检索符合特定条件的对象。
以下是一个使用 CriteriaQuery 进行基于整数的模糊搜索的示例:
// 定义一个实体类
@Entity
public class Customer {
@Id
private Long id;
private String name;
private Integer age;
// getters and setters
}
// 定义一个 CriteriaQuery 接口实现类
public class CustomerCriteriaQuery {
public CriteriaQuery<Customer> createCriteriaQuery() {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Customer> criteriaQuery = builder.createQuery();
Root<Customer> root = criteriaQuery.from(Customer.class);
// 添加一个 "like" 模糊搜索条件
criteriaQuery.where(builder.like(root.get("name"), "%" + searchTerm + "%"));
// 定义排序条件
criteriaQuery.orderBy(builder.asc(root.get("name")));
return criteriaQuery;
}
}
// 调用 CriteriaQuery 实现类进行查询
public List<Customer> getCustomersBySearchTerm(String searchTerm) {
CustomerCriteriaQuery customerCriteriaQuery = new CustomerCriteriaQuery();
return customerCriteriaQuery.createCriteriaQuery().getResultList();
}
上述代码示例中,我们定义了一个 Customer
实体类,以及一个 CustomerCriteriaQuery
实现类。CustomerCriteriaQuery
实现了 CriteriaQuery
接口,允许您使用类似 SQL 的语法构建查询。
在 createCriteriaQuery()
方法中,我们使用 entityManager
得到一个 CriteriaBuilder
对象,然后使用它创建一个 CriteriaQuery
对象。接着我们定义根对象(Root<Customer>
),添加一个 "like" 模糊搜索条件,使用 %
符号指定搜索范围。
最后,在 getCustomersBySearchTerm()
方法中,我们创建一个 CustomerCriteriaQuery
对象,并调用 createCriteriaQuery()
方法得到一个 CriteriaQuery
对象。然后我们使用 getResultList()
方法得到一个包含所有符合搜索条件的 Customer
对象的列表。
总之,使用 CriteriaQuery 可以方便地进行复杂的查询操作,包括模糊搜索和排序等。
领取专属 10元无门槛券
手把手带您无忧上云