使用specification接口查询的时候需要用到三个参数:
Specification<T> specification = (Root<T> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) -> {
... ...
}
1.root:
表示要查询的对象。方法:root.get("userName");
2.criteriaQuery:
定义了一套基本的查询。(CriteriaQuery接口定义了特定于顶级查询的功能。)常用方法:
1.where
CriteriaQuery<T> where(Predicate... restrictions); --CriteriaQuery接口修改查询以根据指定限制predicates的连接限制查询结果。替换先前添加的限制(如果有)。如果未指定任何限制,则只需删除以前添加的任何限制。此方法仅重写相应AbstractQuery方法的返回类型。
2.getRestriction
Predicate getRestriction(); --CommonAbstractCriteria接口返回与where子句限制相对应的predicates,如果未指定限制,则返回null。
Predicate:查询条件的拼接对应于where后面的添加表达式。