hibernate分页技术
来源:互联网 发布:mac air 默认win7 编辑:程序博客网 时间:2024/06/05 18:23
1.新建项目并配置好包。
2.dao
//分页查询hql查询条件。
public List queryforpage(final String hql,final int offset,final int length);
//查询所有记录数hql查询的条件,总记录数
public int getAllRowCount(String hql);
daoImpl
public int getAllRowCount(String hql){
return getHibernateTemplate().find(hql).size();
}
public List queryforpage(final String hql,final int offset,final int length){
List list=getHibernateTemplate().executeFind(new HibernateCallback()){
public Object doInHibernate(Session session) throws HibernateException,SQLException{
Query query=session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list=query.list();
return list;
}
});
return list;
}
}
PageBean
public class PageBean implements Serializable{
private LIst list;//要返回的某一页的记录列表
private int allRow; //总记录数
private int totalPage; //总页数
private int currentPage; //当前页
private int pageSize; //每页记录数
private boolean isFirstPage; //是否为第一页
private boolean isLastPage; //是否为最后一页
private boolean hasPreviousPage; //是否有前一页
private boolean hasNextPage; //是否有下一页
getset
public void init(){//初始化分页信息
this.isFirstPage=isFirstPage();
this.isLastPage=isLastPage();
this.hasPreviousPage=isHasPreviousPage();
this.hasNextPage=isHasNextPage();
}
public boolean isFirstPage(){//如是当前是第一页,,判断页的信息,只需get方法
return currentPage==1;
}
public boolean isLastPage(){//如果当前页是最后一页
return currentPage==totalPage;
}
public boolean isHasPreviousPage(){//只要当前页不是第一页
return currentPage!=1;
}
public boolean isHasNextPage(){
return currentPage !=totalPage;//只要当前页不是最后一页
}
//计算总页数,静态方法,供外部直接通过类名调用
public static int countTotalPage(final int pageSize,final int allRow){
int totalPage=allRow%pageSize==0?allRow/pageSize:allRow/pageSize+1;
return totalPage;
}
//计算当前页开始记录
public static int countOffset(final int pageSize,final int currentPage){
final int offset=pageSize*(currentPage-1);
return offset;
}
//计算当前页,假如为0或者没有值使用1代替
public static int countCurrentPage(int page){
final int curPage=(page==0?1:page);
return curPage;
}
}
service//分页查询currentPage当前第几页,pageSize每页大小
public PageBean queryforPage(int pageSize,int currentPage);
serviceImpl//分页查询currentpage当前第几页,pagesize每页大小,封闭了分页信息的bean
public PageBean queryforPage(int pageSize,int page){
final String hql="from com**model.u";
int allRow=dao.getAllRowCount(hql);//总记录数
int totalPage=PageBean.countTotalPage(pageSize,allRow);//总页数
final int offset=PageBean.countOffset(pageSize,page);//当前页开始记录
final int length=pageSize;//每页记录数
final int currentPage=PageBean.countCurrentPage(page);
List<modell> list=dao.queryforpage(hql,offset,length);
//把每页信息保存到bean中
PageBean pageBean=new PageBean();
pageBean.setpageSize(pageSize);
pageBean.setCurrentPage(currentPage);
pageBean.setAllRow(allRow);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
return pageBean;
}
jsp
s:iterator value="pageBean.list">
<s:propertyvalue="title"/>
<a href="getArticle.action?id=<s:property value="id"/>">modify</a>
<a href="deleteArticle.action?id=<s:property value="id"/>"onclick="return askDel()"/>delete</a><br/>
</s:iterator>
共<s:propertyvalue="pageBean.allRow"/>条记录
共<s:propertyvalue="pageBean.totalPage"/>页
当前第<s:propertyvalue="pageBean.currentPage"/>页<br/>
<s:if test="%{pageBean.currentPage== 1}">
第一页上一页
</s:if>
<s:else>
<a href="listMyArticle.action?page=1">第一页</a>
<a href="listMyArticle.action?page=<s:property value="%{pageBean.currentPage-1}"/>">上一页</a>
</s:else>
<s:if test="%{pageBean.currentPage!= pageBean.totalPage}">
<a href="listMyArticle.action?page=<s:property value="%{pageBean.currentPage+1}"/>">下一页</a>
<ahref="listMyArticle.action?page=<s:propertyvalue="pageBean.totalPage"/>">最后一页</a>
</s:if>
<s:else>
下一页 最后一页
</s:else>
- hibernate分页技术
- hibernate分页技术
- Hibernate的分页技术
- hibernate分页技术
- hibernate分页技术
- Hibernate 分页技术(下拉框)
- struts+hibernate的分页技术
- Hibernate 数据库分页查询技术
- 数据库分页技术--hibernate篇
- dwr+hibernate实现的分页技术
- 基于hibernate实现的分页技术
- 基于hibernate实现的分页技术
- 基于hibernate实现的分页技术
- 基于hibernate实现的分页技术
- 基于hibernate实现的分页技术
- 基于hibernate的HibernateCallback分页技术
- 基于hibernate实现的分页技术
- Spring+Hibernate+Struts技术的一个分页程序,转载
- 由int与unsigned int 相加看c++类型转换
- C#中的Dictionary字典类介绍
- C#中的String.Format介绍
- SQLite介绍及使用
- 如何成为QTP专家
- hibernate分页技术
- 15道谷歌面试题及答案
- Python类型和对象
- Python属性和方法
- C#更改控制台文本的前景色和背景色
- 微博地址url(id)与mid的相互转换
- 简明Python3教程 首页
- 简明Python3教程 1.翻译
- ExtJS梦想之旅(二)--Ext事件驱动编程