关于JPA中,菜单及用户实体的业务类分页方法知识点

Page是一个泛型接口,代表查询的单页结果集,也有其他信息。常用以下方法

int getTotalPages() //返回总的页数
long getTotalElements() //返回总行数
List getContent() //返回查询结果集的List

Pageable接口常常用于构造翻页查询,通常也有以下方法

int getPageNumber() //获取总页数
int getPageSize() //获取一页的行数
Pageable next() //返回Pageable类型的下一页
boolean hasPrevious() //是否有上一页

PageRequest是Pageable的实现类。用于构造分页查询需要的页码(从0开始)、每页行数、排序等,有如下构造方法

public static PageRequest(int page,int siez)
public static PageRequest(int page,int size,Sort sort)

PageImpl是Page的实现类,可以由List和其他参数构造一个PageImpl对象

PageImpl(List content,Pageable pageable,long toal)//结果集的List,pageable,总行数total

Sort是一个用于排序的类型,默认升序排序,通常有以下用法

Sort sort = new Sort(Direction.DESC,“id”);

UserServiceImpl 中的list方法实现

 public List<Menu> list(Map<String, Object> map, Integer page, Integer pageSize) {
        Pageable pageable =PageRequest.of(page,pageSize,Sort.Direction.DESC,"orderNo");
        Page<Menu>  pages = menuDao.findAll(new Specification<Menu>() {
            @Override
            public Predicate toPredicate(Root<Menu> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                Predicate predicate = criteriaBuilder.conjunction();
                //加入 等于divId 父节点
                if(map.get("pId")!=null){
                    predicate.getExpressions().add(criteriaBuilder.equal(root.get("pId"),map.get("pId")));
                }
                return predicate;
            }
        },pageable);

        return  pages.getContent();
    }

拿到这个pid 下的子节点数量

 public Long getTotal(Map<String, Object> map) {
        Long count=menuDao.count(new Specification<Menu>() {
            @Override
            public Predicate toPredicate(Root<Menu> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                Predicate predicate=cb.conjunction();
                // 加入 等于 divId  父节点
                if (map.get("pId") != null) {
                    predicate.getExpressions().add(cb.equal(root.get("pId"), map.get("pId")));
                }
                return predicate;
            }
        });
        return count;
    }

MenuServiceImpl 中的list方法实现

 public List<User> list(Map<String, Object> map, Integer page, Integer pageSize) {
        Pageable pageable = PageRequest.of(page,pageSize, Sort.Direction.DESC,"orderNo");
        Page<User> list =userDao.findAll(pageable);
        List<User> users =list.getContent();
        return users; //拿到list集合
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值