JpaSpecificationExecutor接口提供了5个方法:
每个都要给定一个Specification条件集合。
public interface JpaSpecificationExecutor<T> {
//返回一个T类型对象
T findOne(Specification<T> var1);
//返回一个T类型集合
List<T> findAll(Specification<T> var1);
//需要额外增加一个Pageable支持分页操作,返回Page集合,供分页使用
Page<T> findAll(Specification<T> var1, Pageable var2);
//提供排序参数,可以通过某种排序后返回一个T类型对象集合
List<T> findAll(Specification<T> var1, Sort var2);
//返回符合条件的T类型对象的个数
long count(Specification<T> var1);
}
看一看参数Specification是什么:
public interface Specification<T> {
//定义了一个toPredicate return Predicate
//Root是根结点,可以访问所有的类,所以给一个类泛型创建一个root就可以使用给定类的对象了。
//CriteriaBuilder 参数用来确定是模糊查询还是精确查询
Predicate toPredicate(Root<T> var1, CriteriaQuery<?> var2, CriteriaBuilder var3);
}
具体例子:
戳这里👈