SSH网站分页技术的使用
一、在ArticleDao中添加分页查询的方法:
/**
*分页查询
*@paramhql查询的条件
*@paramoffset开始记录
*@paramlength一次查询几条记录
*@return
*/
publicListqueryForPage(finalStringhql,finalintoffset,finalintlength);
/***//**
*查询所有记录数
*@paramhql查询的条件
*@return总记录数
*/
publicintgetAllRowCount(Stringhql);
二、在ArticleDaoImpl中给出相应方法的具体实现:
/**
*查询所有记录数
*
*@return总记录数
*/
publicintgetAllRowCount(Stringhql){
returngetHibernateTemplate().find(hql).size();
}
/**
*分页查询
*
*@paramhql
*查询的条件
*@paramoffset
*开始记录
*@paramlength
*一次查询几条记录
*@return
*/
publicListqueryForPage(finalStringhql,finalintoffset,
finalintlength){
Listlist=getHibernateTemplate().executeFind(newHibernateCallback(){
publicObjectdoInHibernate(Sessionsession)
throwsHibernateException,SQLException{
Queryquery=session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
Listlist=query.list();
returnlist;
}
});
returnlist;
}
三、在ArticleService中添加方法分页查询的方法:
/**
*分页查询
*@paramcurrentPage当前第几页
*@parampageSize每页大小
*@return封闭了分页信息(包括记录集list)的Bean
*/
publicPageBeanqueryForPage(intpageSize,intcurrentPage);
四、在ArticleServiceImpl中给出相应方法的具体实现:
/**
*分页查询
*@paramcurrentPage当前第几页
*@parampageSize每页大小
*@return封闭了分页信息(包括记录集list)的Bean
*/
publicPageBeanqueryForPage(intpageSize,intpage){
finalStringhql="fromArticle";
intallRow=articleDao.getAllRowCount(hql);
inttotalPage=PageBean.countTotalPage(pageSize,allRow);
finalintoffset=PageBean.countOffset(pageSize,page);
finalintlength=pageSize;
finalintcurrentPage=PageBean.countCurrentPage(page);
List<Article>list=articleDao.queryForPage(hql,offset,length);//"一页"的记录
//把分页信息保存到Bean中
PageBeanpageBean=newPageBean();
pageBean.setPageSize(pageSize);
pageBean.setCurrentPage(currentPage);
pageBean.setAllRow(allRow);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
returnpageBean;
}
最后一步,根据需要,在分页页面上的相应位置进行配置。基本配置如下:
<s:iftest="%{pageBean.currentPage==1}">
<span>首页</span>
<span>上一页</span>
</s:if><s:else>
首页
[url=...?page=<s:propertyvalue=]">上一页[/url]
<span>…</span>
</s:else>
<spanclass=""><s:propertyvalue="pageBean.currentPage"/></span>
<s:iftest="%{pageBean.currentPage!=pageBean.totalPage}">
<spanclass="">…</span>
<ahref="...?page=<s:propertyvalue="%{pageBean.currentPage+1}"/>">下一页
</a>
<ahref="...?page=<s:propertyvalue="pageBean.totalPage"/>">尾页
</a>
</s:if><s:else>
<span>下一页</span>
<span>尾页</span>
</s:else>
<span>共<s:property
value="pageBean.allRow"/>条记录,<s:property
value="pageBean.totalPage"/>页</span></div>
</div>
</div>
至此,网站的分页功能就完成了。