Pagehelper的 使用

跟着我最后实现出来的效果图:

前端页面jsp:

  1 <%--
  2   Created by IntelliJ IDEA.
  3   User: Administrator
  4   Date: 2020/12/10
  5   Time: 20:34
  6   To change this template use File | Settings | File Templates.
  7 --%>
  8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 10 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
 11 <html>
 12 <head>
 13     <link href="${pageContext.request.contextPath}/static/css/bootstrap.css" rel="stylesheet">
 14 
 15     <title>主页</title>
 16 </head>
 17 <body>
 18 <div id="showDiv" align="center">
 19     <h1>${userSession.userName},欢迎登陆!</h1>
 20 
 21 
 22     <form action="/jsp/user/queryAll" method="get">
 23         用户名查询<input type="text" id="userName" name="userName" value="${userName}"/>
 24         用户角色:<select id="userRole" name="userRole">
 25         <option value="0" selected="selected">--请选择--</option>
 26         <c:forEach items="${roleList}" var="role">
 27             <option ${role.id==userRole?"selected=selected":""} value="${role.id}">${role.roleName}</option>
 28         </c:forEach>
 29     </select>
 30         <input id="but" type="button" value="查询">
 31     </form>
 32 
 33 
 34     <div id="showTable">
 35         <a href="/jsp/user/insertdo">添加用户</a>
 36         <table border="1px">
 37             <tr>
 38                 <td>用户编码</td>
 39                 <td>用户名称</td>
 40                 <td>性别</td>
 41                 <td>生日</td>
 42                 <td>电话</td>
 43                 <td>用户角色</td>
 44                 <td>操作</td>
 45             </tr>
 46             <c:forEach items="${pageInfo.list}" var="user">
 47                 <tr>
 48                     <td>${user.userCode}</td>
 49                     <td>${user.userName}</td>
 50                     <td>
 51                         <c:if test="${user.gender==1}">
 52  53                         </c:if>
 54                         <c:if test="${user.gender==2}">
 55  56                         </c:if>
 57                     </td>
 58 
 59                     <td><fmt:formatDate value="${user.birthday}" pattern="yyyy-MM-dd"/></td>
 60 
 61                     <td>${user.phone}</td>
 62                     <td>
 63                         <c:if test="${user.userRole==1}">
 64                             系统管理员
 65                         </c:if>
 66                         <c:if test="${user.userRole==2}">
 67                             经理
 68                         </c:if>
 69                         <c:if test="${user.userRole==3}">
 70                             普通员工
 71                         </c:if>
 72 
 73                     </td>
 74                     <td>
 75                         <a class="userView" href="${pageContext.request.contextPath}/jsp/user/view/${user.id}">查看</a>
 76                         <a href="${pageContext.request.contextPath}/jsp/user/updateById?id=${user.id}">修改</a>
 77                         <a class="userDel" userId="${user.id}" href="javascript:void (0)">删除</a>
 78                     </td>
 79                 </tr>
 80             </c:forEach>
 81         </table>
 82         <div>
 83             <nav aria-label="Page navigation example">
 84                 <ul class="pagination justify-content-center">
 85                     <%--上一页的判断 如果是第一页则上一页和首页按钮消失--%>
 86                     <c:if test="${pageInfo.pageNum>1}">
 87                         <li class="page-item">
 88                             <a class="page-link"
 89                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=1&userName=${userName}&userRole=${userRole}">首页</a>
 90                         </li>
 91                         <li class="page-item">
 92                             <a class="page-link"
 93                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${pageInfo.prePage}&userName=${userName}&userRole=${userRole}"
 94                                tabindex="-1" aria-disabled="true">上一页</a>
 95                         </li>
 96                     </c:if>
 97 
 98                     <c:choose>
 99                         <%--判断总页数是否大于10页,
100                         如果大于10页我们的最后一位数值算法是用 pageInfo.pages-9
101                         如果小于10页我们的选择框只需要迭代到总页数 pageInfo.pages
102                         --%>
103                         <c:when test="${pageInfo.pages<=10}">
104                             <c:choose>
105                                 <%--如果当前页小于6数字不需要往后加+1--%>
106                                 <c:when test="${pageInfo.pageNum<=6}">
107                                     <%--如果小于10页我们的选择框只需要迭代到总页数 pageInfo.pages--%>
108                                     <c:forEach var="num" begin="1" end="${pageInfo.pages}">
109                                         <c:choose>
110                                             <%--如果当前页被选中 加上样式 active--%>
111                                             <c:when test="${pageInfo.pageNum==num}">
112                                                 <li class="page-item active">
113                                                     <a class="page-link"
114                                                        href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}">${num}</a>
115                                                 </li>
116                                             </c:when>
117                                             <c:otherwise>
118                                                 <li class="page-item">
119                                                     <a class="page-link"
120                                                        href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}">${num}</a>
121                                                 </li>
122                                             </c:otherwise>
123                                         </c:choose>
124                                     </c:forEach>
125                                 </c:when>
126                                 <c:otherwise>
127                                     <c:choose>
128                                         <%--这里也是计算下次最后页的数值,11<=7+4 --%>
129                                         <c:when test="${pageInfo.pages<=(pageInfo.pageNum+4)}">
130                                             <%--总页数大于10的情况--%>
131                                             <c:forEach var="num" begin="1" end="${pageInfo.pages}">
132                                                 <c:choose>
133                                                     <c:when test="${pageInfo.pageNum==num}">
134                                                         <li class="page-item active">
135                                                             <a class="page-link"
136                                                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}">${num}</a>
137                                                         </li>
138                                                     </c:when>
139                                                     <c:otherwise>
140                                                         <li class="page-item">
141                                                             <a class="page-link"
142                                                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}">${num}</a>
143                                                         </li>
144                                                     </c:otherwise>
145                                                 </c:choose>
146                                             </c:forEach>
147                                         </c:when>
148                                         <c:otherwise>
149 
150                                             <%--保证每次都是10个选择框--%>
151                                             <c:forEach var="num" begin="${pageInfo.pageNum-5}" end="${pageInfo.pageNum+4}">
152                                                 <c:choose>
153                                                     <c:when test="${pageInfo.pageNum==mun}">
154                                                         <li class="page-item active">
155                                                             <a class="page-link"
156                                                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${mun}&userName=${userName}&userRole=${userRole}"
157                                                                tabindex="-1" aria-disabled="true">${mun}</a>
158                                                         </li>
159                                                     </c:when>
160                                                     <c:otherwise>
161                                                         <li class="page-item">
162                                                             <a class="page-link"
163                                                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}"
164                                                                tabindex="-1" aria-disabled="true">${num}</a>
165                                                         </li>
166                                                     </c:otherwise>
167                                                 </c:choose>
168                                             </c:forEach>
169                                         </c:otherwise>
170                                     </c:choose>
171                                 </c:otherwise>
172                             </c:choose>
173                         </c:when>
174 
175                         <c:otherwise>
176                             <c:choose>
177                                 <c:when test="${pageInfo.pageNum<=6}">
178                                     <c:forEach var="num" begin="1" end="10">
179                                         <c:choose>
180                                             <c:when test="${pageInfo.pageNum==num}">
181                                                 <li class="page-item active">
182                                                     <a class="page-link"
183                                                        href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}">${num}</a>
184                                                 </li>
185                                             </c:when>
186                                             <c:otherwise>
187                                                 <li class="page-item">
188                                                     <a class="page-link"
189                                                        href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}">${num}</a>
190                                                 </li>
191                                             </c:otherwise>
192                                         </c:choose>
193                                     </c:forEach>
194                                 </c:when>
195                                 <c:otherwise>
196                                     <c:choose>
197                                         <c:when test="${pageInfo.pages<=(pageInfo.pageNum+4)}">
198                                             <%--总页数大于10的情况,如果大于10页我们的最后一位数值算法是用 pageInfo.pages-9--%>
199                                             <c:forEach var="num" begin="${pageInfo.pages-9}" end="${pageInfo.pages}">
200                                                 <c:choose>
201                                                     <c:when test="${pageInfo.pageNum==num}">
202                                                         <li class="page-item active">
203                                                             <a class="page-link"
204                                                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}">${num}</a>
205                                                         </li>
206                                                     </c:when>
207                                                     <c:otherwise>
208                                                         <li class="page-item">
209                                                             <a class="page-link"
210                                                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}">${num}</a>
211                                                         </li>
212                                                     </c:otherwise>
213                                                 </c:choose>
214                                             </c:forEach>
215                                         </c:when>
216                                         <c:otherwise>
217                                             <c:forEach var="num" begin="${pageInfo.pageNum-5}"
218                                                        end="${pageInfo.pageNum+4}">
219                                                 <c:choose>
220                                                     <c:when test="${pageInfo.pageNum==mun}">
221                                                         <li class="page-item active">
222                                                             <a class="page-link"
223                                                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${mun}&userName=${userName}&userRole=${userRole}"
224                                                                tabindex="-1" aria-disabled="true">${mun}</a>
225                                                         </li>
226                                                     </c:when>
227                                                     <c:otherwise>
228                                                         <li class="page-item">
229                                                             <a class="page-link"
230                                                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${num}&userName=${userName}&userRole=${userRole}"
231                                                                tabindex="-1" aria-disabled="true">${num}</a>
232                                                         </li>
233                                                     </c:otherwise>
234                                                 </c:choose>
235                                             </c:forEach>
236                                         </c:otherwise>
237                                     </c:choose>
238                                 </c:otherwise>
239                             </c:choose>
240                         </c:otherwise>
241                     </c:choose>
242 
243 
244                     <%--下一页 按钮限制 如果当前页是最后一页 则下一页和尾页按钮消失--%>
245                     <c:if test="${pageInfo.pageNum<pageInfo.pages}">
246                         <li class="page-item">
247                             <a class="page-link"
248                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${pageInfo.nextPage}&userName=${userName}&userRole=${userRole}">下一页</a>
249                         </li>
250                         <li class="page-item">
251                             <a class="page-link"
252                                href="${pageContext.request.contextPath}/jsp/user/queryAll?pageNum=${pageInfo.pages}&userName=${userName}&userRole=${userRole}">尾页</a>
253                         </li>
254                     </c:if>
255                 </ul>
256             </nav>
257         </div>
258     </div>
259 </div>
260 <script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery-1.8.3.min.js"></script>
261 <script type="text/javascript" src="${pageContext.request.contextPath }/static/js/page.js"></script>
262 <script type="text/javascript" src="${pageContext.request.contextPath }/static/js/userview.js"></script>
263 <script src="${pageContext.request.contextPath}/static/js/jquery-3.5.1.js"></script>
264 <script src="${pageContext.request.contextPath}/static/js/jquery-migrate-1.0.0.js"></script>
265 <script src="${pageContext.request.contextPath}/static/js/bootstrap.js"></script>
266 </body>
267 </html>




service层代码:

 1  public List<User> selectByExample(Integer pageNum,Integer pageSize,String userName,Long userRole) {
 2         UserExample userExample=new UserExample();
 3         UserExample.Criteria criteria = userExample.createCriteria();
 4         if(userName==null){
 5             userName="";
 6         }
 7         if(userName!=null&&!"".equals(userName)){
 8             System.out.println("我进来了userName");
 9             criteria.andUserNameLike("%"+userName+"%");
10        }
11         if(userRole!=null&&userRole!=0){
12             System.out.println("我进来了userRole");
13             criteria.andUserRoleEqualTo(userRole);
14         }
15         PageHelper.startPage(pageNum,pageSize);
16         List<User> users = userMapper.selectByExample(userExample);
17         System.out.println(pageNum+"--"+pageSize+"--"+userName+"--"+userRole);
18         return users;
19     }

contorller 代码:

 @RequestMapping("/queryAll")
    public String queryAll(Model model,Integer pageNum, Integer pageSize,String userName,Long userRole){
        if(pageNum==null||pageNum.equals("")){
            pageNum= Constant.PAGE_NUM;
        }
        if(pageSize==null){
            pageSize=Constant.PAGE_SIZE;
        }
       /* if(userRole==null){
            userRole=0L;
        }*/
        List<Role> roleList = userService.getRoleList();
        List<User> users = userService.selectByExample(pageNum, pageSize,userName,userRole);
        PageInfo<User> pageInfo=new PageInfo<>(users);
        System.out.println("userRole-----="+userRole);
        model.addAttribute("pageInfo",pageInfo);
        model.addAttribute("userName",userName);
        model.addAttribute("userRole",userRole);
        model.addAttribute("roleList",roleList);
        return "main";
    }

这里使用了pageInfo的一个pageHelper的工具包 

PageInfo<User> pageInfo=new PageInfo<User>(users);

里面有许多封装好的方法,可以直接调用 列如 

1.pageInfo.pages 总页数

2.pageInfo.pageNum 当前页

3.pageInfo.nextPage 下一页

4.pageInfo.prePage 上一页



运行效果:
1.第一页的时候页面没有上一页和首页


在第二页的时候我们的上一页就显示出来了



3.多条件查询也是跟着分页来的

原文地址:https://www.cnblogs.com/KcBlog/p/14146182.html