PageHelper的使用

自己基于ssm框架使用pagehelper分页的使用总结

一、引入依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
   <version>5.1.2</version>
</dependency>

二、在mybatis配置文件中配置分页插件

<plugin interceptor="com.github.pagehelper.PageInterceptor">
  		<property name="reasonable" value="true"/>  
</plugin>


三、创建实体类PageBean存储分页设定信息

public class PageBean {
	 private int start; //开始页数
	    private int count; //每页显示个数
	    private int total; //总个数
	    private String param; //参数
	 
	    private static final int defaultCount = 5; //默认每页显示5条
	 
	    public int getStart() {
	        return start;
	    }
	    public void setStart(int start) {
	        this.start = start;
	    }
	    public int getCount() {
	        return count;
	    }
	    public void setCount(int count) {
	        this.count = count;
	    }
	 
	    public PageBean (){
	        count = defaultCount;
	    }
	    public PageBean(int start, int count) {
	        this();
	        this.start = start;
	        this.count = count;
	    }
	 
	    public boolean isHasPreviouse(){
	        if(start==0)
	            return false;
	        return true;
	    }
	    public boolean isHasNext(){
	        if(start==getLast())
	            return false;
	        return true;
	    }
	 
	    public int getTotalPage(){
	        int totalPage;
	        // 假设总数是50,是能够被5整除的,那么就有10页
	        if (0 == total % count)
	            totalPage = total /count;
	            // 假设总数是51,不能够被5整除的,那么就有11页
	        else
	            totalPage = total / count + 1;
	 
	        if(0==totalPage)
	            totalPage = 1;
	        return totalPage;
	 
	    }
	 
	    public int getLast(){
	        int last;
	        // 假设总数是50,是能够被5整除的,那么最后一页的开始就是45
	        if (0 == total % count)
	            last = total - count;
	            // 假设总数是51,不能够被5整除的,那么最后一页的开始就是50
	        else
	            last = total - total % count;
	        last = last<0?0:last;
	        return last;
	    }
	 
	    @Override
	    public String toString() {
	        return "Page [start=" + start + ", count=" + count + ", total=" + total + ", getStart()=" + getStart()
	                + ", getCount()=" + getCount() + ", isHasPreviouse()=" + isHasPreviouse() + ", isHasNext()="
	                + isHasNext() + ", getTotalPage()=" + getTotalPage() + ", getLast()=" + getLast() + "]";
	    }
	    public int getTotal() {
	        return total;
	    }
	    public void setTotal(int total) {
	        this.total = total;
	    }
	    public String getParam() {
	        return param;
	    }
	    public void setParam(String param) {
	        this.param = param;
	    }
}

四、Controller编写

	@RequestMapping("blog")
	public String blog(Model model,PageBean page){
		//设置每页显示几条
		PageHelper.offsetPage(page.getStart(),5);
		List<Category> list = blogService.selectAll();
		//设置总页数
		int total = (int)new PageInfo<>(list).getTotal();
		page.setTotal(total);
	
		model.addAttribute("page",page);
		model.addAttribute("blogList",list);
		
		return "blog";
	}

五、前台分页显示

数据展示部分

 <c:forEach items="${blogList}" var="blog">
	 <tr>
        <td>${blog.pid}</td>
	 <td>${blog.title}</td>
	<td>${blog.author}</td>
	<td>${blog.intime}</td>
	<td>${blog.uptime}</td>
			           
	<td>
	<a href="#">修改</a>
	 <a href="#">删除</a>
	</td>
			           
	</tr>
 </c:forEach>

<!-- 分页按钮部分-->
<nav>
  <ul class="pagination">  
    <li <c:if test="${!page.hasPreviouse}">class="disabled"</c:if>>
      <a  href="<%=basePath%>blog?start=0${page.param}" aria-label="Previous" >
        <span aria-hidden="true">«</span>
      </a>
    </li>
 
    <li <c:if test="${!page.hasPreviouse}">class="disabled"</c:if>>
      <a  href="<%=basePath%>blog?start=${start-page.count}${page.param}" aria-label="Previous" >
        <span aria-hidden="true">‹</span>
      </a>
    </li>   
 
    <c:forEach begin="0" end="${page.totalPage-1}" varStatus="status">
     
        <c:if test="${status.count*page.count-start<=20 && status.count*page.count-start>=-10}">
            <li <c:if test="${status.index*page.count==start}">class="disabled"</c:if>>
                <a 
                href="<%=basePath%>blog?start=${status.index*page.count}${page.param}"
                <c:if test="${status.index*page.count==start}">class="current"</c:if>
                >${status.count}</a>
            </li>
        </c:if>
    </c:forEach>
 
    <li <c:if test="${!page.hasNext}">class="disabled"</c:if>>
      <a href="<%=basePath%>blog?start=${start+page.count}${page.param}" aria-label="Next">
        <span aria-hidden="true">›</span>
      </a>
    </li>
    <li <c:if test="${!page.hasNext}">class="disabled"</c:if>>
      <a href="<%=basePath%>blog?start=${page.last}${page.param}" aria-label="Next">
        <span aria-hidden="true">»</span>
      </a>
    </li>
  </ul>
</nav>

效果:



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值