看了好多人的PageHelper使用,一看那么复杂,试了好几次都没有成功,如今终于做成了。核心注意的地方已加粗。后端真的超级简单,觉得前端复杂可以直接粘贴。
效果如图
再也不想用PageInfo实体类自己去写了,PageHelper真香。
PageHelper使用
Maven加依赖(也就是导包了)
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.2.1</version>
</dependency>
2.核心点
一个PageHelper.startPage(pageNum,pageSize);
还有一个拿PageInfo包一下
就这么简单
@Override
public PageInfo<User> findByPage(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum,pageSize);
List<User> users = userDAO.selectByExample(null);
PageInfo<User> pageInfo = new PageInfo<>(users);
System.out.println(pageInfo);
return pageInfo ;
}
- 之后调取的时候
强调getList()!!!
理论上getList是得到的是没分页的集合{pageNum,pageSize…一大堆…,List{userList}}
可是打印出来怪怪的,list是还是前面一样,但用着的时候好好的,传到前端就是userList。估计toString哪里出了问题。网上有人说是PageHelper版本问题,我改了依旧无法解决。(不影响使用)
@RequestMapping("findByPage")
@ResponseBody
public Map<String,Object> findByPage(@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "5") Integer pageSize){
Map<String,Object> resultMap = new HashMap<>();
try {
PageInfo<User> byPage = userService.findByPage(pageNum, pageSize);
System.out.println(byPage);
resultMap.put("page",byPage);
resultMap.put("userList",byPage.getList());
resultMap.put("result",true);
}catch (Exception e){
resultMap.put("result",false);
resultMap.put("message","分页查询异常");
}
return resultMap;
}
- 前端写法
pageMsg+='<li class="'+(data.page.pageNum==1?'disabled':'')+'"><a onclick="show('+(data.page.hasPreviousPage?data.page.prePage:data.page.pageNum)+')">上一页</a></li>';
for (var i = 1; i<=data.page.pages;i++){
pageMsg+='<li class="'+(data.page.pageNum==i?'active':'')+'"><a onclick="show('+i+')">'+i+' <span class="sr-only">(current)</span></a></li>';
}
pageMsg+='<li class="'+(data.page.isLastPage?'disabled':'')+'"><a onclick="show('+(data.page.hasNextPage?data.page.nextPage:data.page.pageNum)+')">下一页</a></li>';
$("#byPage").html(pageMsg);