一、导入Maven依赖
1、打开pom.xml
2、在dependencies节点添加PageHelper的依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
3、等待IDEA自动导入JAR包
二、配置MyBatis
1、打开applicationContext.xml
2、在配置SqlSessionFactoryBean对象的节点中添加PagerHelper声明
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 其它property-->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<props>
<prop key="helperDialect">mysql</prop>
<prop key="resonable">true</prop>
</props>
</property>
</bean>
</array>
</property>
三、调用PagerHelper
1、在Serivce层,调用DAO函数之前,添加PageHelper.startPage(pageNum, pageSize);。其中,pageNum为页码,从1开始计数,pageSize为一页的记录数量。
2、注意:在DAO对应的Mapper中的SQL语句不能有 ;
四、在Controller层中将PageInfo存入JSP
1、调用Serive层的代码,查询多条记录,存入List容器
2、使用List容器初始化 PageInfo对象
3、将PageInfo对象存入ModelAndView,使JSP能访问PageInfo对象
4、示例代码
@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对象进行分页
1、PageInfo基本属性
属性 | 含义 |
---|---|
firstPage | 首页页码 |
lastPage | 尾页页码 |
prePage | 上一页页码 |
nextPage | 下一页页码 |
pageSize | 一页的记录数 |
hasPreviousPage | 是否有上一页 |
hasNextPage | 是否有下一页 |
list | 包含记录的List容器 |
2、使用JSTL和PageInfo的属性编写JSP页面
3、显示记录示例
<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>
4、显示页码示例
<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>
5、最终效果
转载自:https://blog.youkuaiyun.com/qq_36342736/article/details/94590797