2.6.3 Specification
我们可以定义Specification
来定制查询,我们需要Repository继承JpaSpecificationExecutor
接口;这样我们就可以在方法中使用Specification
参数了。
Specification
是函数接口,只有一个方法:
Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder);
root
:要查询的实体;query
:用来进行高级别的查询,如where
、select
方法等;criteriaBuilder
:用来构造查询,可使用如like
、equal
、lessThan
等,返回值为Predicate
;javax.persistence.criteria.Predicate
:用来作为查询的条件,可组合。
我们自定类来演示Specification
:
public class CustomSpecs {
public static Specification<Person> nameEqual(String name){
return (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("name&