使用JPA分页首先JPA需要继承 JpaRepository 和JpaSpecificationExecutor这两个接口。尖括号中的String是对象的主键类型,我的主键是String类型的,如果是int 就填写 Integer.
public interface TaskListJPA extends JpaRepository<对象,String>,JpaSpecificationExecutor<对象> {
}
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
上面是需要导入的包
Pageable pageable = PageRequest.of(PageNum -1, PageSize);
Specification<对象> specification = new Specification<对象>() {
@Override
public Predicate toPredicate(Root<对象> root,
CriteriaQuery<?> query,
CriteriaBuilder cb) {
//建一个条件的集合
List<Predicate> predicates = new ArrayList<Predicate>();
//等于删除标志delflag=0,根据自己的需求书写
predicates.add(cb.equal(root.get("delflag").as(Integer.class), 0));
//等于taskName like %哈哈哈% ,哈哈哈可以为自己的搜索条件
predicates.add(cb.like(root.get("taskName"), "%" + 哈哈哈 + "%"));
Predicate[] pre = new Predicate[predicates.size()];
return query.where(predicates.toArray(pre)).getRestriction();
}
}; //这里我们按照返回来的条件进行查询,就能得到我们想要的结果
Page<对象> page = taskListJPA.findAll(specification, pageable);
int 总页数 = page.getTotalPages();
long 总条数 =page.getTotalElements();
List<对象> list= page.getContent();