SSH基础上分页功能的实现文档格式.docx
- 文档编号:16349820
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:6
- 大小:61.15KB
SSH基础上分页功能的实现文档格式.docx
《SSH基础上分页功能的实现文档格式.docx》由会员分享,可在线阅读,更多相关《SSH基础上分页功能的实现文档格式.docx(6页珍藏版)》请在冰豆网上搜索。
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的整合。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSH 基础上 分页 功能 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)