首页 > hibernate分页

hibernate分页

分页从网上考的,好用。这个框架

 

/**
* 用于分页的工具类
* @author 莫取网名
*/
public class Pager {private List list; //对象记录结果集
private int total = 0; // 总记录数
private int limit = 10; // 每页显示记录数
private int pages = 1; // 总页数
private int pageNumber = 1; // 当前页private boolean isFirstPage=false; //是否为第一页
private boolean isLastPage=false; //是否为最后一页
private boolean hasPreviousPage=false; //是否有前一页
private boolean hasNextPage=false; //是否有下一页private int navigatePages=8; //导航页码数
private int[] navigatePageNumbers; //所有导航页号public Pager(int total, int pageNumber) {
init(total, pageNumber, limit);
}public Pager(int total, int pageNumber, int limit) {
init(total, pageNumber, limit);
}private void init(int total, int pageNumber, int limit){
//设置基本参数
this.total=total;
this.limit=limit;
this.pages=(this.total-1)/this.limit+1;//根据输入可能错误的当前号码进行自动纠正
if(pageNumber<1){
this.pageNumber=1;
}else if(pageNumber>this.pages){
this.pageNumber=this.pages;
}else{
this.pageNumber=pageNumber;
}//基本参数设定之后进行导航页面的计算
calcNavigatePageNumbers();//以及页面边界的判定
judgePageBoudary();
}/**
* 计算导航页
*/
private void calcNavigatePageNumbers(){
//当总页数小于或等于导航页码数时
if(pages<=navigatePages){
navigatePageNumbers=new int[pages];
for(int i=0;ipages){
endNum=pages;
//最后navigatePages页
for(int i=navigatePages-1;i>=0;i--){
navigatePageNumbers[i]=endNum--;
}
}else{
//所有中间页
for(int i=0;i 1;
hasNextPage = pageNumber < pages;
}public void setList(List list) {
this.list = list;
}/**
* 得到当前页的内容
* @return {List}
*/
public List getList() {
return list;
}/**
* 得到记录总数
* @return {int}
*/
public int getTotal() {
return total;
}/**
* 得到每页显示多少条记录
* @return {int}
*/
public int getLimit() {
return limit;
}/**
* 得到页面总数
* @return {int}
*/
public int getPages() {
return pages;
}/**
* 得到当前页号
* @return {int}
*/
public int getPageNumber() {
return pageNumber;
}/**
* 得到所有导航页号 
* @return {int[]}
*/
public int[] getNavigatePageNumbers() {
return navigatePageNumbers;
}public boolean isFirstPage() {
return isFirstPage;
}public boolean isLastPage() {
return isLastPage;
}public boolean hasPreviousPage() {
return hasPreviousPage;
}public boolean hasNextPage() {
return hasNextPage;
}public String toString(){
StringBuffer sb=new StringBuffer();
sb.append("[")
.append("total=").append(total)
.append(",pages=").append(pages)
.append(",pageNumber=").append(pageNumber)
.append(",limit=").append(limit)
.append(",isFirstPage=").append(isFirstPage)
.append(",isLastPage=").append(isLastPage)
.append(",hasPreviousPage=").append(hasPreviousPage)
.append(",hasNextPage=").append(hasNextPage)
.append(",navigatePageNumbers=");
int len=navigatePageNumbers.length;
if(len>0)sb.append(navigatePageNumbers[0]);
for(int i=1;i

  

后面是使用方法

我实际项目的例子

public String getComment(int id,int startindex){commentlist = new ArrayList();Query query = qiandaoDao.selectnotlist("select new power.model.Comment(sc.comment, sc.songid,sc.username, ai.headimg) from Songcomment sc,Accountinfo ai where sc.songid='"+id+"' and ai.username=sc.username ");pager = getPager(id, startindex, query);System.out.println(pager.toString());commentlist = pager.getList();if (commentlist.size()>0) {return JSONArray.fromObject(commentlist).toString();}else{return null;}}public Pager getPager(int id,int startindex,Query queryList){int totalCount=queryList.list().size();int limit = 10;Pager pager=new Pager(totalCount, startindex,limit);queryList.setFirstResult((pager.getPageNumber()-1)*limit); //容错处理queryList.setMaxResults(limit);pager.setList(queryList.list());return pager;}

  

转载于:https://www.cnblogs.com/lemniscate317/p/5138810.html

更多相关:

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  • 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?1、在Startup类中读取json配置文件1、使用Confi...

  •   1 public class FrameSubject extends JFrame {   2    3   …………..   4    5   //因为无法使用多重继承,这儿就只能使用对象组合的方式来引入一个   6    7   //java.util.Observerable对象了。   8    9   DateSub...

  • 本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码、快速的访问Web Api。 NSwagStudio 下载地址 比较强大、可以生成TypeScript、WebApi Controller、CSharp Client  1、运行WebApi项目  URL http://yourserver/swagger 然后...

  •   在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性.   ModelState 在ApiController中一个ModelState属性用来获取参数验证结果.   public abstract class ApiController : IHttpController,...

  • 1# 引用  C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.dll C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.Applicati...