Spring-Data JPA 多条件动态查询~

589 阅读1分钟

「这是我参与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:用来构建查询,此对象里有很多条件方法。