PageHelper实现分页

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

一、导入Maven依赖

  1. 打开pom.xml
  2. dependencies节点添加PageHelper的依赖
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.2</version>
        </dependency>

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 等待IDEA自动导入JAR包

二、配置MyBatis

  1. 打开applicationContext.xml
  2. 在配置SqlSessionFactoryBean对象的节点中添加PagerHelper声明
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<span class="token comment">&lt;!-- 其它property--&gt;</span>
	
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>array</span><span class="token punctuation">&gt;</span></span>
            <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&gt;</span></span>
                <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&gt;</span></span>
                    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>props</span><span class="token punctuation">&gt;</span></span>
                        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&gt;</span></span>mysql<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>prop</span><span class="token punctuation">&gt;</span></span>
                        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</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">&gt;</span></span>true<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>prop</span><span class="token punctuation">&gt;</span></span>
                    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>props</span><span class="token punctuation">&gt;</span></span>
                <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>property</span><span class="token punctuation">&gt;</span></span>
            <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>bean</span><span class="token punctuation">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>array</span><span class="token punctuation">&gt;</span></span>
    <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>property</span><span class="token punctuation">&gt;</span></span>

三、调用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容器
  1. 使用JSTL和PageInfo的属性编写JSP页面
  2. 显示记录示例
<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>
  1. 显示页码示例
<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>

 
 
  1. 最终效果
    在这里插入图片描述
                </div>
                <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
                                </div>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值