为什么在使用PageHelper插件时,指定的每页记录数大小失效?显示所有的记录数

1.问题现象:

这里指定每页显示5条,却把所有的记录数都显示出来了
为什么在使用PageHelper插件时,指定的每页记录数大小失效?显示所有的记录数_第1张图片

2.分析:

之前是可以的,然后发现:PageHelper.startPage(pageNum,pageSize) 和执行sql的语句 顺序颠倒了,然后就出错了。

3.验证:

然后,自己就验证一把,在PageHelper.startPage(pageNum,pageSize)语句执行之前和执行之后分别执行同一sql,看看结果是否相同。

验证代码如下:

@RequestMapping("/furnsByCondition")
    @ResponseBody
    public Msg listFurnsByCondition(@RequestParam(defaultValue = "1") Integer pageNum,
                               @RequestParam(defaultValue = "5") Integer pageSize,@RequestParam(defaultValue = "")String search){


        List furnList1 = furnService.findByCondition(search);
        System.out.println("在PageHelper.startPage()【之前】查询的结果记录数:"+furnList1.size());
        PageHelper.startPage(pageNum,pageSize);
        List furnList = furnService.findByCondition(search);
        System.out.println("在PageHelper.startPage()【之后】查询的结果记录数:"+furnList.size());
        PageInfo pageInfo = new PageInfo(furnList,pageSize);

        Msg resultMsg = Msg.success();
        resultMsg.add("pageInfo",pageInfo);
        return resultMsg;
    }

输出结果:

在PageHelper.startPage()【之前】查询的结果记录数:7
在PageHelper.startPage()【之后】查询的结果记录数:5

说明:
前者查询满足条件的所有记录。并没有进行分页查询
后者查询满足条件的所有记录。同时进行分页查询

4.总结:

在执行PageHelper.startPage(pageNum,pageSize);之前执行的sql并不会进行分页查询,只有之后执行的才会进行分页查询。
注意:sql语句的执行要在PageHelper.startPage(pageNum,pageSize);之后。

你可能感兴趣的:(mybatis,pageHelper,sql)