关于PageHelper插件分页查询不生效的问题和解决方案

问题描述:

使用PageHelper插件的时候,发现前端向后台成功传入当前页pageNum、每页大小pageSize,但查询后前端并未显示分页效果

    @RequestMapping("/list")
    public ModelAndView findByPage(
            @RequestParam(defaultValue = "1") Integer pageNum,
            @RequestParam(defaultValue = "5") Integer pageSize){
        String companyId = "1";
        PageInfo<Dept> pageInfo = deptService.findByPage(companyId, pageNum, pageSize);
        ModelAndView mv = new ModelAndView();
        mv.addObject("pageInfo",pageInfo);
        mv.setViewName("/system/dept/dept-list");
        return mv;
    }

在这里插入图片描述

原因:

检查发现,在service层中PageHeoper的分页方法与查询方法顺序写反了:

    @Override
    public PageInfo<Dept> findByPage(String companyId,Integer pageNum,Integer pageSize) {
        List<Dept> list = deptDao.findAll(companyId);//查询方法
        PageHelper.startPage(pageNum,pageSize); //分页方法写在了查询方法下面,因此对上面的查询结果不生效
        PageInfo<Dept> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

解决办法:

调换顺序:

    @Override
    public PageInfo<Dept> findByPage(String companyId,Integer pageNum,Integer pageSize) {
    	PageHelper.startPage(pageNum,pageSize); //将分页方法放在查询前,问题解决
        List<Dept> list = deptDao.findAll(companyId);//查询方法
        PageInfo<Dept> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

总结:

PageHelper.startPage(int pageNumm,int pageSize)方法只对接下来的一次查询进行分页,因此要注意两者顺序

你可能感兴趣的:(java后台开发)