1.简单的分页:
PageRequest pageRequest=PageRequest.of(page,size);
Page Ts=TDao.findAll(pageRequest);
得到的就是一个分页的结果
2.嵌合
T findOne(Specification var1);
**List<T>** **findAll(Specification<T> var1);**
**Page<T>** findAll(Specification<T> var1, **Pageable** var2);//分页
List<T> findAll(Specification<T> var1, Sort var2);
long count(Specification<T> var1);
以不分页的findAll()为例
生成对象,重写topredicate方法
findAll()括号里是:
**new Specification() {
@Override
public Predicate toPredicate(
Root<T> root,
CriteriaQuery <?> criteriaQuery, CriteriaBuilder criteriaBuilder
) {
return null;
}**
root对应实体的信息,
criteriaBuilder用来制作查询条件
该方法返回的对象类型是Predicate。正是toPredicate需要返回的值。
如果有多个条件,我们就可以创建一个Predicate集合,最后CriteriaBuilder的and和or方法进行组合,得到最后的Predicate对象。