原因:先查数据,才配置分页
解析: 逻辑上来说需要先配置分页再去查找数据数据,才能根据分页配置去查找数据及可实现分页效果(分页原理:如设置查几条,从哪条开始查)
如果先查数据了,那么就是查询所有数据,自然分页限制查询就没有效果。
例:controller接收mapping:
// 获取所有员工,分页后显示到list页面
@RequestMapping(value = "/emps/{pageNum}", method = RequestMethod.GET)
public String getAllEmp(Map<String, Object> map, @PathVariable("pageNum") Integer pageNum, HttpServletRequest request) {
// 分页配置
PageHelper.startPage(pageNum, 2);
List<Emp> empList = service.getAllEmp();
// 所有的员工信息
PageInfo<Emp> pageInfo = new PageInfo<>(empList, 5);
String page = PageUtil.getPageInfo(pageInfo, request);
map.put("empList", empList);
map.put("page", page);
return "list";
}
pageUtil插件
**
* 首页 上一页 1 2 3 4 5 下一页 末页
*
*/
public class PageUtil {
public static String getPageInfo(PageInfo<Emp> pageInfo, HttpServletRequest request) {
String path = request.getContextPath() + "/";
StringBuilder builder = new StringBuilder();
// 拼接首页
builder.append("<a href='" + path + "emps/1'>首页</a>");
builder.append(" ");
// 拼接上一页
if (pageInfo.isHasPreviousPage()) {
builder.append("<a href='" + path + "emps/" + pageInfo.getPrePage() + "'>上一页</a>");
builder.append(" ");
} else {
builder.append("上一页");
builder.append(" ");
}
// 拼接页码
int[] nums = pageInfo.getNavigatepageNums();
for (int i : nums) {
if (i == pageInfo.getPageNum()) {
builder.append("<a style='color:red;' href='" + path + "emps/" + i + "'>" + i + "</a>");
builder.append(" ");
} else {
builder.append("<a href='" + path + "emps/" + i + "'>" + i + "</a>");
builder.append(" ");
}
}
// 拼接下一页
if (pageInfo.isHasNextPage()) {
builder.append("<a href='" + path + "emps/" + pageInfo.getNextPage() + "'>下一页</a>");
builder.append(" ");
} else {
builder.append("下一页");
builder.append(" ");
}
// 拼接尾页
builder.append("<a href='" + path + "emps/" + pageInfo.getPages() + "'>尾页</a>");
builder.append(" ");
return builder.toString();
}
}