jpa的动态条件查询和分页

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对象。

猜你喜欢

转载自blog.csdn.net/weixin_39940088/article/details/84656176
今日推荐