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>

至此,网站的分页功能就完成了。

ssh

相关推荐