⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hibernatepage.java

📁 主要用来简化hibernate分页的过程
💻 JAVA
字号:
package com.wosame.page;

import org.hibernate.HibernateException;
import org.hibernate.Query;

import java.io.Serializable;
import java.util.List;

/**
 * User: cjp
 * Date: 2006-8-15
 * Time: 15:59:41
 * Hibernate分页信息
 */
public class HibernatePage<T> implements Serializable {
    private static final long serialVersionUID = 1913490847094219152L;
    private List<T> elements;
    private int pageSize;
    private int pageNumber;
    private int totalElements = 0;

    /**
     * 构建HibernatePage对象,完成Hibernate的Query数据的分页处理
     *
     * @param resultQuery Hibernate的Query对象
     * @param total       统计总数
     * @param pageNumber  当前页编码,从1开始,如果传的值为Integer.MAX_VALUE表示获取最后一页。
     *                    <p/>
     *                    <p/>
     *                    如果你不知道最后一页编码,传Integer.MAX_VALUE即可。如果当前页超过总页数,也表示最后一页。
     *                    <p/>
     *                    <p/>
     *                    这两种情况将重新更改当前页的页码,为最后一页编码。
     * @param pageSize    每一页显示的条目数
     */
    public HibernatePage(Query resultQuery, int total, int pageNumber, int pageSize) {
        this.pageNumber = pageNumber;
        this.pageSize = pageSize;
        try {
            this.totalElements = total;
            if (Integer.MAX_VALUE == this.pageNumber || this.pageNumber > getLastPageNumber())   //last page
            {
                this.pageNumber = getLastPageNumber();
            } else if (pageNumber < 1) {
                this.pageNumber = 1;
            }

            elements = resultQuery.setFirstResult((this.pageNumber - 1) * this.pageSize).setMaxResults(this.pageSize).list();
        } catch (HibernateException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 构建HibernatePage对象,完成Hibernate的分页处理
     *
     * @param elements   当前页面要显示的数据
     * @param total      所有页面数据总数
     * @param pageNumber 当前页编码,从1开始,如果传的值为Integer.MAX_VALUE表示获取最后一页。
     *                   <p/>
     *                   <p/>
     *                   如果你不知道最后一页编码,传Integer.MAX_VALUE即可。如果当前页超过总页数,也表示最后一页。
     *                   <p/>
     *                   <p/>
     *                   这两种情况将重新更改当前页的页码,为最后一页编码。
     * @param pageSize   每一页显示的条目数
     */
    public HibernatePage(List elements, int total, int pageNumber, int pageSize) {
        this.pageNumber = pageNumber;
        this.pageSize = pageSize;
        this.totalElements = total;

        if (Integer.MAX_VALUE == this.pageNumber || this.pageNumber > getLastPageNumber())   //last page
        {
            this.pageNumber = getLastPageNumber();
        } else if (pageNumber < 1) {
            this.pageNumber = 1;
        }

        this.elements = elements;
    }

    public boolean isFirstPage() {
        return getPageNumber() == 1;
    }

    public boolean isLastPage() {
        return getPageNumber() >= getLastPageNumber();
    }

    public boolean hasNextPage() {
        return getLastPageNumber() > getPageNumber();
    }

    public boolean hasPreviousPage() {
        return getPageNumber() > 1;
    }

    public int getLastPageNumber() {
        return totalElements % this.pageSize == 0 ? totalElements / this.pageSize : totalElements / this.pageSize + 1;
    }

    /**
     * 返回List类型数据
     *
     * @return List数据源
     */
    public List<T> getElements() {
        return elements;
    }

    public int getTotalElements() {
        return totalElements;
    }

    public int getThisPageFirstElementNumber() {
        return (getPageNumber() - 1) * getPageSize() + 1;
    }

    public int getThisPageLastElementNumber() {
        int fullPage = getThisPageFirstElementNumber() + getPageSize() - 1;
        return getTotalElements() < fullPage ? getTotalElements() : fullPage;
    }

    public int getNextPageNumber() {
        return getPageNumber() + 1;
    }

    public int getPreviousPageNumber() {
        return getPageNumber() - 1;
    }

    public int getPageSize() {
        return pageSize;
    }

    public int getPageNumber() {
        return pageNumber;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -