刚开始学习SSM框架,由于要实现CRUD操作,发现分页功能好像是需要的,于是就做了一个分页。
步骤1:没有使用Maven创建工程,所以需要jar包。
把这两个jar包导入项目,开始下一步。
2:在mybatis配置文件中添加插件
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
3:进入controller编写分页的逻辑代码
PageHelper.startPage(1, 5);//传入页码,从第1页开始,以及每页要显示的记录条数:5条
//startPage后面紧跟的这个查询就是一个分页查询
List<User> emps = userService.selectAll();
//使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了
//封装了详细的分页信息,包括有我们查询出来的数据, 5:连续显示的页数
PageInfo page = new PageInfo(emps,5);
model.addAttribute("users", page);
4:分页好后的信息被封装在了page对象里,在页面拿到对象后可以进行操作。
<!--分页条信息 -->
<div class="col-md-6">
<nav aria-label="Page navigation">
<ul class="pagination">
<li><a href="<%=request.getContextPath() %>/user/selectAll?pn=1">首页</a></li> //pn:代表pageNum,页面传入的参数
<c:if test="${users.hasNextPage }"> //查询是否有上一页,如果没有则不会有上一页那个标志
<li><a href="<%=request.getContextPath() %>/user/selectAll?pn=${users.pageNum-1}" aria-label="Previous"> <span
aria-hidden="true">«</span>
</a></li>
</c:if>
<c:forEach items="${users.navigatepageNums }" var="page_Num"> //最开始设置的要显示的页数为5页,navigatepageNums则是获取到要显示的页数,page_Num表示当前页数
<!--如果当前页码是要显示的页码,就高亮显示 -->
<c:if test="${page_Num == users.pageNum }">
<li class="active"><a href="#">${page_Num }</a></li>
</c:if>
<c:if test="${page_Num != users.pageNum }">
<li><a href="<%=request.getContextPath() %>/user/selectAll?pn=${page_Num }">${page_Num }</a></li>
</c:if>
</c:forEach>
<c:if test="${users.hasNextPage }">
<li><a href="<%=request.getContextPath() %>/user/selectAll?pn=${users.pageNum+1}" aria-label="Next"> <span
aria-hidden="true">»</span>
</a></li>
</c:if>
<li><a href="<%=request.getContextPath() %>/user/selectAll?pn=${users.pages}">尾页</a></li>
</ul>
</nav>
</div>
效果:
到了第一页就没有上一页的标志,同理最后一页没有下一页的标志。