1.问题现象:
这里指定每页显示5条,却把所有的记录数都显示出来了
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<Furn> furnList1 = furnService.findByCondition(search);
System.out.println("在PageHelper.startPage()【之前】查询的结果记录数:"+furnList1.size());
PageHelper.startPage(pageNum,pageSize);
List<Furn> 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);之后。