今天的工作重点是完成分页组件PageHelper的配置和使用,顺带完成了用户管理的增删改查功能。
一.Maven配置
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
二.在application.xml中配置
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<prop key="helperDialect">mysql</prop>
<prop key="reasonable">true</prop>
</props>
</property>
</bean>
</array>
</property>
三.Controller层中编写逻辑
@RequestMapping("/findAll.do")
@ResponseBody
public ModelAndView findAll(@RequestParam(required = false, defaultValue="1") Integer startPage,
@RequestParam(required = false, defaultValue = "2") Integer pageSize) {
PageHelper.startPage(startPage, pageSize);
ModelAndView mv = new ModelAndView();
List<userinfo> userinfos = userInfoService.findAll();
PageInfo<userinfo> pageInfo = new PageInfo<>(userinfos);
mv.addObject("pageInfo",pageInfo);
mv.setViewName("user-list");
return mv;
}
其中,startPage是当前页面,pageSize为单页显示列表数,最终封装为PageInfo对象,执行跳转。
再来看jsp文件
<div class="box-tools pull-right">
<ul class="pagination">
<li><a href="${pageContext.request.contextPath}/user/findAll.do?startPage=1&pageSize=2" aria-label="Previous">首页</a></li>
<li><a href="${pageContext.request.contextPath}/user/findAll.do?startPage=${pageInfo.pageNum-1}&pageSize=2">上一页</a></li>
<c:forEach begin="1" end="${pageInfo.pages}" var="pageNumber">
<li><a href="${pageContext.request.contextPath}/user/findAll.do?startPage=${pageNumber}&pageSize=2">${pageNumber}</a></li>
</c:forEach>
<li><a href="${pageContext.request.contextPath}/user/findAll.do?startPage=${pageInfo.pageNum+1}&pageSize=2">下一页</a></li>
<li><a href="#" aria-label="Next">尾页</a></li>
</ul>
</div>
关于页数的显示采用循环显示,始终包括上一页和下一页。并且可以动态设置页数和每页最大列表数。
关于用户的增删改查不再讲述,附代码如下:
@RequestMapping("/toInsert.do")
public String toInsert() {
return "user-add";
}
@RequestMapping("/insert.do")
public String insert(userinfo user) {
boolean tag = userInfoService.insert(user);
if(tag)
return "redirect:/user/findAll.do";
else
return "../failer";
}
@RequestMapping("/toUpdate.do")
public String toUpdate(Model model, @RequestParam int id) {
model.addAttribute("user",userInfoService.queryById(id));
return "user-update";
}
@RequestMapping("update.do")
public String update(userinfo user) {
boolean tag = userInfoService.update(user);
if(tag)
return "redirect:/user/findAll.do";
else
return "../failer";
}
@RequestMapping("delete.do")
public String delete(int id) {
boolean tag = userInfoService.delete(id);
if(tag)
return "redirect:/user/findAll.do";
else
return "../failer";
}
@RequestMapping("/findAll.do")
@ResponseBody
public ModelAndView findAll(@RequestParam(required = false, defaultValue="1") Integer startPage,
@RequestParam(required = false, defaultValue = "2") Integer pageSize) {
PageHelper.startPage(startPage, pageSize);
ModelAndView mv = new ModelAndView();
List<userinfo> userinfos = userInfoService.findAll();
PageInfo<userinfo> pageInfo = new PageInfo<>(userinfos);
mv.addObject("pageInfo",pageInfo);
mv.setViewName("user-list");
return mv;
}