基于Java实现的简单且通用的分页实现封装 <Pagiation>

博客搬家了, 新地址 [ http://wuwz.org ],是时候换上HEXO了

Pagination.java (interface)

定义了分页常用的属性,方法
包名:com.app.pagination;

package com.app.pagination;
import java.util.List;
/**
 * 通用分页接口
 * @author: [email protected]
 * @ClassName: Pagination
 * @Version: v0.1
 * @param <T>
 */  
public interface Pagination<T> {
   
    /**
     * 判断是否是首页
     * @return
     */
    boolean isFirst();
    /**
     * 判断是否是尾页
     * @return
     */
    boolean isLast();
    /**
     * 判断是否有上一页
     * @return
     */
    boolean isPrevious();
    /**
     * 判断是否有下一页
     * @return
     */
    boolean isNext();


    /**
     * 获取上一页的页码
     * @return
     */
    int getPreviousIndex();
    /**
     * 获取下一页的页码
     * @return
     */
    int getNextIndex();
    /**
     * 获取当前页码
     * @return
     */
    int getPageIndex();
    /**
     * 获取当前页大小
     * @return
     */
    int getPageSize();
    /**
     * 获取总页数
     * @return
     */
    int getTotalPages();
    /**
     * 获取数据总行数
     * @return
     */
    int getTotalElements();

    /**
     * 获取当前页的数据
     * @return
     */
    List<T> getCurrData();

    /**
     * 获取数字分页链接对象
     * @return
     */
    BetweenIndex getBetweenIndex();

    /**
     * 获取每页显示的分页链接数
     * @return
     */
    int getPageLinkNumber();

    /**
     * 设置每页的分页链接数量
     * @param pageLinkNumber
     */
    void setPageLinkNumber(int pageLinkNumber);
}

BetweenIndex.java (interface)

该接口负责获取分页链接的开始和结尾索引
包名: com.app.pagination;

package com.app.pagination;
/**
 * 开始链接-结束链接
 * @author: [email protected]
 * @ClassName: BetweenIndex
 * @Version: v0.1
 */
public interface BetweenIndex {
   
    /**
     * 获取开始分页链接索引
     * @return
     */
    int getBeginIndex();
    /**
     * 获取结束分页链接索引
     * @return
     */
    int getEndIndex();
}

DefaultPagination.java (implements Pagination)

Pagination接口的默认实现类
包名: com.app.pagination.impl;

package com.app.pagination.impl;
import java.util.List;
import com.app.pagination.BetweenIndex;
import com.app.pagination.Pagination;
/**
 * Pagination接口默认实现
 * @author: [email protected]
 * @ClassName: DefaultPagination
 * @Version: v0.1
 * @param <T>
 */
public class DefaultPagination<T> implements Pagination<T> {
   
    private int totalElements;
    private int pageSize;
    private int totalPages;
    private int pageIndex;
    private QueryHandler<T> queryHandler;
    private List<T> currData;
    private int pageLinkNumber;

    public DefaultPagination(int pageIndex, int pageSize, QueryHandler<T> queryHandler, int pageLinkNumber) {
        this(pageIndex, pageSize, queryHandler);
        setPageLinkNumber(pageLinkNumber);
    }
    public DefaultPagination(int pageIndex, int pageSize, QueryHandler<T> queryHandler){
        //初始化数据访问回调接口
        this.queryHandler = queryHandler;
        //查询总行数
        setTotalElements();
        //修正页大小
        setPageSize(pageSize);
        //计算总页数:
        setTotalPages();
        //修正页码
        setPageIndex(pageIndex);
        //查询当前页数据
        setCurrData();
    }


    private void setCurrData() {

        this.currData = queryHandler.getCurrData(pageIndex, pageSize);
    }
    private void setPageIndex(int pageIndex) {

        if(pageIndex < 1) {
            this.pageIndex  = 1;
        } else if(pageIndex > totalPages) {
            this.pageIndex = totalPages;
        } else {
            this.pageIndex = pageIndex;
        }
    }
    private void setTotalPages() {

        if(pageSize > 0) {
            /*//普通算法: 
            this.totalPages = totalElements % pageSize == 0 ? 
                    totalElements / pageSize : (totalElements / pageSize) + 1;*/
            //减一公式:
            this.totalPages = (totalElements + pageSize - 1) / pageSize;
        }
    }
    private void setPageSize(int pageSize) {

        if(pageSize < 1) {
            this.pageSize = 1;
        } else if(pageSize > totalElements) {
            this.pageSize = totalElements;
        } else {
            this.pageSize = pageSize;
        }
    }
    private void setTotalElements() {

        this.totalElements = queryHandler.getTotalElements();
    }
    @Override
    public boolean isFirst() {

        return pageIndex == 1;
    }
    @Override
    public boolean isLast() {

        return pageIndex == totalPages;
    }
    @Override
    public boolean isPrevious() {

        return pageInd
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<html> <head> <title>人员管理界面</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js"></script> </head> <body> <div class="container"> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> <small>员工列表 —— 显示所有员工信息</small> </h1> </div> </div> </div> <div class="row clearfix"> <div class="col-md-12 column"> <table class="table table-hover table-striped"> <thead> <tr> <th>ID</th> <th>姓名</th> <th>电话号</th> <th>地址</th> <th>职位</th> <th>职位编号</th> <th>状态</th> <th>证件照</th> </tr> </thead> <tbody> <c:forEach items="${employees}" var="employees"> <tr> <td>${employees.id}</td> <td>${employees.name}</td> <td>${employees.phonenumber}</td> <td>${employees.address}</td> <td>${employees.job}</td> <td>${employees.jobid}</td> <td>${employees.state}</td> <td><img src="${pageContext.request.contextPath}/images/${employees.pic}" style="width: 100px; height: 50px"></td> <td> <a href="${pageContext.request.contextPath}/toupdate/${employees.id}">更改</a> | <a href="${pageContext.request.contextPath}/delete/${employees.id}" onclick="return confirm('确定要删除吗?')">删除</a> </td> </tr> </c:forEach> </tbody> </table> </div> </div> </div> </body> </html>给这个界面的表格实现一个分页的功能,每页的最大数目为5
06-02

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值