版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
SSM框架的PaeHelper分页
一、导入Maven依赖
- 打开pom.xml
- 在
dependencies
节点添加PageHelper的依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 等待IDEA自动导入JAR包
二、配置MyBatis
- 打开applicationContext.xml
- 在配置
SqlSessionFactoryBean
对象的节点中添加PagerHelper声明
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<span class="token comment"><!-- 其它property--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>property</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>plugins<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>array</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>bean</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>com.github.pagehelper.PageInterceptor<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>property</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>properties<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>props</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>prop</span> <span class="token attr-name">key</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>helperDialect<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>mysql<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>prop</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>prop</span> <span class="token attr-name">key</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>resonable<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>true<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>prop</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>props</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>property</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>bean</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>array</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>property</span><span class="token punctuation">></span></span>
三、调用PagerHelper
- 在Serivce层,调用DAO函数之前,添加
PageHelper.startPage(pageNum, pageSize);
。其中,pageNum为页码,从1开始计数,pageSize为一页的记录数量。 - 注意:在DAO对应的Mapper中的SQL语句不能有
;
四、在Controller层中将PageInfo存入JSP
- 调用Serive层的代码,查询多条记录,存入List容器
- 使用List容器初始化 PageInfo对象
- 将PageInfo对象存入ModelAndView,使JSP能访问PageInfo对象
- 示例代码
@RequestMapping("/getAll.do")
public ModelAndView getAll(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "5") int size) {
List<UserInfo> userInfos = userService.getAll(page, size);
PageInfo pageInfo=new PageInfo(userInfos);
ModelAndView mv = new ModelAndView();
mv.addObject("pageInfo", pageInfo);
mv.setViewName("user-list");
return mv;
}
五、在JSP中使用PageInfo对象进行分页
- PageInfo基本属性
属性 | 含义 |
---|---|
firstPage | 首页页码 |
lastPage | 尾页页码 |
prePage | 上一页页码 |
nextPage | 下一页页码 |
pageSize | 一页的记录数 |
hasPreviousPage | 是否有上一页 |
hasNextPage | 是否有下一页 |
list | 包含记录的List容器 |
- 使用JSTL和PageInfo的属性编写JSP页面
- 显示记录示例
<c:forEach var="user" items="${pageInfo.list}">
<tr>
<td><input name="ids" type="checkbox"></td>
<td>${user.id}</td>
<td>${user.username}</td>
<td>${user.password}</td>
<td class="text-center">
<a href="${pageContext.request.contextPath}/user/toUpdate.do?id=${user.id}" class="btn bg-olive btn-xs">更新</a>
<a href="${pageContext.request.contextPath}/user/toDelete.do?id=${user.id}" class="btn bg-olive btn-xs">删除</a>
<a href="${pageContext.request.contextPath}/role/getAll.do" class="btn bg-olive btn-xs">添加角色</a>
</td>
</tr>
</c:forEach>
- 显示页码示例
<ul class="pagination"> <li> <a href="${pageContext.request.contextPath}/user/getAll.do?page=${pageInfo.firstPage}&size=${pageInfo.pageSize}" aria-label="Previous">首页</a> </li> <c:if test="${pageInfo.hasPreviousPage}"> <li> <a href="${pageContext.request.contextPath}/user/getAll.do?page=${pageInfo.prePage}&size=${pageInfo.pageSize}">上一页</a> </li> </c:if> <c:forEach var="i" begin="1" end="${pageInfo.pages}"> <li> <a href="${pageContext.request.contextPath}/user/getAll.do?page=${i}&size=${pageInfo.pageSize}">${i}</a> </li> </c:forEach> <c:if test="${pageInfo.hasNextPage}"> <li> <a href="${pageContext.request.contextPath}/user/getAll.do?page=${pageInfo.nextPage}&size=${pageInfo.pageSize}">下一页</a> </li> </c:if> <li> <a href="${pageContext.request.contextPath}/user/getAll.do?page=${pageInfo.lastPage}&size=${pageInfo.pageSize}" aria-label="Next">尾页</a> </li> </ul>
- 最终效果
</div> <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet"> </div>