📄 hibernatepage.java
字号:
/*
* Copyright (c) 2005 Your Corporation. All Rights Reserved.
*/
package net.jetmaven;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.ScrollableResults;
import java.util.List;
/**
* Hibernate分页信息
*/
public class HibernatePage implements Page
{
private List elements;
private int pageSize;
private int pageNumber;
private int totalElements = 0;
/**
* 构建HibernatePage对象,完成Hibernate的Query数据的分页处理
*
* @param query Hibernate的Query对象
* @param pageNumber 当前页编码,从1开始,如果传的值为Integer.MAX_VALUE表示获取最后一页。
* 如果你不知道最后一页编码,传Integer.MAX_VALUE即可。如果当前页超过总页数,也表示最后一页。
* 这两种情况将重新更改当前页的页码,为最后一页编码。
* @param pageSize 每一页显示的条目数
*/
public HibernatePage(Query query, int pageNumber, int pageSize)
{
this.pageNumber = pageNumber;
this.pageSize = pageSize;
try
{
ScrollableResults scrollableResults = query.scroll();
//get the total elements number
scrollableResults.last();
this.totalElements = scrollableResults.getRowNumber();
if (Integer.MAX_VALUE == this.pageNumber || this.pageNumber > getLastPageNumber()) //last page
{
this.pageNumber = getLastPageNumber();
}
elements = query.setFirstResult((this.pageNumber - 1) * this.pageSize).setMaxResults(this.pageSize + 1).list();
} catch (HibernateException e)
{
throw new RuntimeException(e);
}
}
public boolean isFirstPage()
{
return getThisPageNumber() == 1;
}
public boolean isLastPage()
{
return getThisPageNumber() >= getLastPageNumber();
}
public boolean hasNextPage()
{
return getLastPageNumber() > getThisPageNumber();
}
public boolean hasPreviousPage()
{
return getThisPageNumber() > 1;
}
public int getLastPageNumber()
{
return totalElements % this.pageSize == 0 ? totalElements / this.pageSize : totalElements / this.pageSize + 1;
}
/**
* 返回List类型数据
*
* @return List数据源
*/
public Object getThisPageElements()
{
return elements;
}
public int getTotalNumberOfElements()
{
return totalElements;
}
public int getThisPageFirstElementNumber()
{
return (getThisPageNumber() - 1) * getPageSize() + 1;
}
public int getThisPageLastElementNumber()
{
int fullPage = getThisPageFirstElementNumber() + getPageSize() - 1;
return getTotalNumberOfElements() < fullPage ? getTotalNumberOfElements() : fullPage;
}
public int getNextPageNumber()
{
return getThisPageNumber() + 1;
}
public int getPreviousPageNumber()
{
return getThisPageNumber() - 1;
}
public int getPageSize()
{
return pageSize;
}
public int getThisPageNumber()
{
return pageNumber;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -