基于SSM框架和Pagehelper的分页实现
基于SSM框架和Pagehelper实现简单的分页很简单。
这个demo是基于之前没有实现分页但是可以直接查询列出所有结果demo的修改。
源码在这儿
提取码:laij
欢迎大家点赞、关注、留言、评论、指正,我会继续努力的。
配置maven依赖
在pom.xml文件贴如下代码,idea会自动下载相应的资源文件。
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
配置Mybatis
applicationContext.xml文件中 ,在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
在Serivce层中,添加PageHelper.startPage(pageNum, pageSize);。
其中,pageNum为页码,从1开始计数,pageSize为一页的记录数量。
在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页面
<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>