「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战」
jpa动态查询
有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data JPA中可以通过JpaSpecificationExecutor接口查询。相比JPQL,其优势是类型安全,更加的面向对象。
对于JpaSpecificationExecutor,这个接口基本是围绕着Specification接口来定义的。我们可以简单的理解为,Specification构造的就是查询条件。
//构造查询条件
public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder cb);
说明:
-
root:Root接口,代表查询的根对象,可以通过root获取实体中的属性。
-
query:代表一个顶层查询对象,用来自定义查询。
-
cb:用来构建查询,此对象里有很多条件方法。