📄 hibernatepage.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 + -