SSH基础上分页功能的实现文档格式.docx

上传人:b****4 文档编号:16349820 上传时间:2022-11-23 格式:DOCX 页数:6 大小:61.15KB
下载 相关 举报
SSH基础上分页功能的实现文档格式.docx_第1页
第1页 / 共6页
SSH基础上分页功能的实现文档格式.docx_第2页
第2页 / 共6页
SSH基础上分页功能的实现文档格式.docx_第3页
第3页 / 共6页
SSH基础上分页功能的实现文档格式.docx_第4页
第4页 / 共6页
SSH基础上分页功能的实现文档格式.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

SSH基础上分页功能的实现文档格式.docx

《SSH基础上分页功能的实现文档格式.docx》由会员分享,可在线阅读,更多相关《SSH基础上分页功能的实现文档格式.docx(6页珍藏版)》请在冰豆网上搜索。

SSH基础上分页功能的实现文档格式.docx

User>

queryForPage(finalStringhql,finalintoffset,finalintlength);

*查询所有的记录数

*@return总记录数

publicintgetAllRowCount(Stringhql);

}

2.然后我们创建其实现类:

MemberDaoImpl.java

packagecn.zbvc.dao.impl;

importorg.hibernate.Query;

importorg.hibernate.Session;

importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;

importcn.zbvc.dao.MemberDao;

publicclassMemberDaoImplextendsHibernateDaoSupportimplementsMemberDao{

publicintgetAllRowCount(Stringhql){

returnthis.getHibernateTemplate().find(hql).size();

@SuppressWarnings("

unchecked"

queryForPage(finalStringhql,finalintoffset,finalintlength){

Sessionsession=this.getSession();

Queryq=session.createQuery(hql);

q.setFirstResult(offset);

q.setMaxResults(length);

List<

list=q.list();

System.out.println(list.size());

session.close();

returnlist;

大家可以看到,我们一共定义了两个方法,第一个方式是获取数据库表的总记录数,第二个方法是获取我们想要获取的某一页的数据集合,传递的三个参数分别是:

查询条件、开始的记录、结束的记录。

细心的读者会发现,这个类继承了HibernateDaoSupport类,HibernateDaoSupport是Spring提供的对Hibernate支持的类,在其参数内,我们能像原生的Hibernate一样调用query.setFirstResult(offset)和query.setMaxResults(length)来实现分页查询功能。

3.然后我们需要建立一个获取分页信息的pageBean.java:

packagecn.zbvc.util;

publicclassPageBean{

privateList<

list;

//要返回的某一页的记录列表

privateintallRow;

//总记录数

privateinttotalPage;

//总页数

privateintcurrentPage;

//当前页

privateintpageSize;

//每页的记录数

privatebooleanisFirstPage;

//是否为当前第一页

privatebooleanisLastPage;

//是否为最后一页

privatebooleanhasPreviousPage;

//是否有前一页

privatebooleanhasNextPage;

//是否有下一页

Setandget方法

PageBean中的具体方法:

*初始化分页信息

publicvoidinit(){

this.isFirstPage=isFirstPage;

this.isLastPage=isLastPage;

this.hasPreviousPage=hasPreviousPage;

this.hasNextPage=hasNextPage;

*计算总页数静态方法

*@parampageSize每页的记录数

*@paramallRow总记录数

*@return总页数

publicstaticintcountTatalPage(finalintpageSize,finalintallRow){

inttoalPage=allRow%pageSize==0?

allRow/pageSize:

allRow/pageSize+1;

returntoalPage;

*计算当前页开始的记录

*@parampageSize每页记录数

*@paramcurrentPage当前第几页

*@return当前页开始记录号

publicstaticintcountOffset(finalintpageSize,finalintcurrentPage){

finalintoffset=pageSize*(currentPage-1);

returnoffset;

*计算当前页,若为0或者请求的URL中没有“?

page=”则用1代替

*@parampage传入的参数(可能为空,即0则返回1)

*@return

publicstaticintcountCurrentPage(intpage){

finalintcurpage=(page==0?

1:

page);

returncurpage;

}}

4.业务逻辑层的实现:

我们现在就只操作User,现在我们在UserService中定义一个方法:

*分页查询

*@parampageSize每页显示多少记录

*@paramcurrentPage当前页

*@return封装了分页信息的bean

publicPageBeanqueryForPage(intpageSize,intpage);

5.使用UserServiceImpl实现这个具体方法:

publicPageBeanqueryForPage(intpageSize,intpage){

finalStringhql="

fromUseruserorderbyuser.id"

;

//查询语句

intallRow=memberDao.getAllRowCount(hql);

inttotalPage=PageBean.countTatalPage(pageSize,allRow);

finalintoffset=PageBean.countOffset(pageSize,page);

//当前页开始记录

finalintlength=pageSize;

//每页记录数

finalintcurrentPage=PageBean.countCurrentPage(page);

//当前页

Listlist=memberDao.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;

6.然后我们为了不影响上一个例子,我们新创建一个ListUserAction2.java:

packagecn.zbvc.action.user;

importcom.opensymphony.xwork2.ActionSupport;

importcn.zbvc.service.UserService;

importcn.zbvc.util.PageBean;

publicclassListUserAction2extendsActionSupport{

privateUserServiceservice;

//通过Spring创建业务层对象使用set方法依赖注入

privatePageBeanpageBean;

//封装了分页信息和数据内容的pageBean

listUser;

//用于储存pageBean当中被封装的User信息

privateintpage=1;

//表示从网页中返回的当前页的值默认为1表示默认显示第一页内容

publicintgetPage(){

returnpage;

publicvoidsetPage(intpage){

this.page=page;

getListUser(){

returnlistUser;

publicvoidsetListUser(List<

listUser){

this.listUser=listUser;

publicPageBeangetPageBean(){

publicvoidsetPageBean(PageBeanpageBean){

this.pageBean=pageBean;

publicvoidsetService(UserServiceservice){

this.service=service;

publicStringexecute()throwsException{

this.pageBean=service.queryForPage(5,page);

//获取封装了分页信息和数据的pageBean

this.listUser=this.pageBean.getList();

//获取数据

returnSUCCESS;

7.配置applicationContext.xml和struts.xml的相关信息,这里省略了。

8.在listUser2.jsp页面中添加分页内容:

<

s:

iteratorvalue="

pageBean"

>

tr>

tdcolspan="

6"

align="

center"

bgcolor="

#5BA8DE"

共<

propertyvalue="

allRow"

/>

条记录

totalPage"

当前第<

currentPage"

页<

br>

iftest="

%{currentPage==1}"

第一页上一页

/s:

if>

!

--currentPage为当前页-->

else>

ahref="

listUser2.action?

page=1"

第一页<

/a>

page=<

%{currentPage-1}"

"

上一页<

%{currentPage!

=totalPage}"

%{currentPage+1}"

下一页<

最后一页<

下一页最后一页

/td>

/tr>

iterator>

9.查看效果:

10.思考总结

关于分页功能实现,应该是有有很多种解决方法,我介绍的这种解决方案是为了给大家一个

范例,让大家明白分页功能实现的原理,其中,大部分的内容借鉴了之前提到的网址。

接下来的时间,我会继续学习关于分页功能的其它实现方式,然后分享给大家,另外,还会继续的整理SSH的整合。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1