为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > Hibernate+struts2+spring_实现分页实例

Hibernate+struts2+spring_实现分页实例

2012-08-29 20页 doc 62KB 23阅读

用户头像

is_812490

暂无简介

举报
Hibernate+struts2+spring_实现分页实例Hibernate+struts2+spring 实现分页实例 首先定义一个包含分页相关信息的分页类PageResultSet类: package cn.tutorinfo.pagination;import java.util.List;/** *该类描述了一个分页数据集 list中是查询的数据集合 ,pageInfo则描述了附加的页相关的信息 */public class PageResultSetT {private ListT list; / 首先定义一个包含分页相关信息的分页类PageResultSet类: ...
Hibernate+struts2+spring_实现分页实例
Hibernate+struts2+spring 实现分页实例 首先定义一个包含分页相关信息的分页类PageResultSet类: package cn.tutorinfo.pagination;import java.util.List;/** *该类描述了一个分页数据集 list中是查询的数据集合 ,pageInfo则描述了附加的页相关的信息 */public class PageResultSetT {private ListT list; / 首先定义一个包含分页相关信息的分页类PageResultSet类: package cn.tutorinfo.pagination; import java.util.List; /** *该类描述了一个分页数据集 list中是查询的数据集合 ,pageInfo则描述了附加的页相关的信息 */ public class PageResultSet { private List list; //当前页的数据信息 private PageInfo pageInfo; //当前页的信息 public List getList() { return list; } public void setList(List list) { this.list = list; } public PageInfo getPageInfo() { return pageInfo; } public void setPageInfo(PageInfo pageInfo) { this.pageInfo = pageInfo; } }  其中关于页的信息类PageInfo 定义如下: package cn.tutorinfo.pagination; /** * 该类描述了分页集中的关于页的信息 */ public class PageInfo { private int totalRow; //总共记录数 private int totalPage; //总共页数 private int currentPage = 1; //当前页,默认为1 private int pageSize = 20; //页的大小 private boolean hasPrevious; private boolean hasNext; private boolean bof; private boolean eof; /* * 构造方法 @param totalRow 总记录数 @param pageSize 页的大小 @param page 页码 */ public PageInfo(int totalRow, int pageSize, int page) { this.totalRow = totalRow; this.pageSize = pageSize; // 根据页大小和总记录数计算出总页数 this.totalPage = countTotalPage(this.pageSize, this.totalRow); // 修正当前页 setCurrentPage(page); init(); } public int getTotalPage() { return totalPage; } public int getCurrentPage() { return this.currentPage; } // 修正计算当前页 public void setCurrentPage(int currentPage) { if(currentPage>this.totalPage){ this.currentPage=this.totalPage; }else if (currentPage<1){ this.currentPage=1; } else{ this.currentPage=currentPage; } } // 获取分页大小 public int getPageSize() { return pageSize; } // 设置分页大小 public void setPageSize(int pageSize) { this.pageSize = pageSize; } // 获取当前页记录的开始索引 public int getBeginIndex() { int beginIndex = (currentPage - 1) * pageSize; // 索引下标从0开始 return beginIndex; } // 计算总页数 public int countTotalPage(int pageSize, int totalRow) { int totalPage = totalRow % pageSize == 0 ? totalRow / pageSize : totalRow / pageSize + 1; return totalPage; } // 返回下一页的页码 public int getNextPage() { if (currentPage + 1 >= this.totalPage) { // 如果当前页已经是最后页 则返回最大页 return this.totalPage; } return currentPage + 1; } // 返回前一页的页码 public int getPreviousPage() { if (currentPage - 1 <= 1) { return 1; } else { return currentPage - 1; } } public boolean isHasPrevious() { return hasPrevious; } public boolean isHasNext() { return hasNext; } public boolean isBof() { return bof; } public boolean isEof() { return eof; } public boolean hasNext() { return currentPage < this.totalPage; } public boolean hasPrevious() { return currentPage > 1; } public boolean isFirst() { return currentPage == 1; } public boolean isLast() { return currentPage >= this.totalPage; } // 初始化信息 private void init() { this.hasNext = hasNext(); this.hasPrevious = hasPrevious(); this.bof = isFirst(); this.eof = isLast(); } } Dao接口层代码: package cn.tutorinfo.dao; import java.util.List; import cn.tutorinfo.domain.Teacher; public interface TeacherDao { //分页查询显示 public List queryByPage(String hql,int beginIndex,int pageSize); //查询的结果记录总数 public int queryRowCount(final String hql); }  DAO实现层代码: /* * 分页查询显示 * @param hql查询的的hql语句 * @param beginIndex 查询记录的起始索引位置 * @param pageSize 一次查询记录个数 * @return List */ @SuppressWarnings("unchecked") public List queryByPage(String hql, int beginIndex, int pageSize) { Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession(); Transaction transaction = null; try { transaction = session.beginTransaction(); Query query = session.createQuery(hql); query.setFirstResult(beginIndex); query.setMaxResults(pageSize); List list = query.list(); transaction.commit(); return list; } catch (Exception e) { if (null != transaction) { transaction.rollback(); e.printStackTrace(); } } return null; } / / 查询指定HQL的结果记录总数 public int queryRowCount(final String hql) { Session session=HibernateSessionFactory.getSessionFactory().getCurrentSession(); Transaction transaction=null; try{ transaction=session.beginTransaction(); Query query=session.createQuery(hql); int result=query.list().size(); //计算个数 transaction.commit(); return result; }catch (Exception e){ if (null!=transaction){ transaction.rollback(); e.printStackTrace(); } } return 0; }   业务逻辑层接口: package cn.tutorinfo.service; import java.util.List; import cn.tutorinfo.domain.Teacher; import cn.tutorinfo.pagination.PageResultSet; public interface TeacherService { /* * @param pagesize 每页大小 * @param page 要显示数据的页 * @return 包含结果集和分页信息的数据集 */ public PageResultSet queryByPage(int pageSize,int Page); }   业务逻辑实现类: //分页获取记录值 public PageResultSet queryByPage(int pageSize, int page) { String hql = "From Teacher"; //查询HQL语句 int totalRow = teacherDao.queryRowCount(hql); // 计算总记录个数 PageInfo pageinfo = new PageInfo(totalRow, pageSize, page); //获取该页的记录 List list = teacherDao.queryByPage(hql, pageinfo.getBeginIndex(), pageinfo.getPageSize()); PageResultSet pageResultSet = new PageResultSet(); pageResultSet.setList(list); pageResultSet.setPageInfo(pageinfo); return pageResultSet; }   struts2 的action中调用业务逻辑实现类来获取页的信息: package cn.tutorinfo.struts; import cn.tutorinfo.domain.Teacher; import cn.tutorinfo.pagination.PageResultSet; import cn.tutorinfo.service.TeacherService; import com.opensymphony.xwork2.ActionSupport; public class ListTeacherAction extends ActionSupport { private static final long serialVersionUID = -7735757614996395820L; private int page; //接受传递的页码参数 private PageResultSet pageResultSet; private TeacherService service; // 业务逻辑组件类由Spring注入 public int getPage() { return page; } public void setPage(int page) { this.page = page; } public PageResultSet getPageResultSet() { return pageResultSet; } public void setPageResultSet(PageResultSet pageResultSet) { this.pageResultSet = pageResultSet; } public void setService(TeacherService service) { this.service = service; } @Override public String execute() throws Exception { this.pageResultSet = service.queryByPage(15,page); // 显示第page页,显示15条记录 return SUCCESS; } }     业务逻辑实现类中的Dao和Action中的业务逻辑组件类都由spring注入.   okay,以上基本完成.前台jsp页面来显示经过action处理后的分页信息:
编号 讲师姓名 性别 讲师类别 讲师介绍 基本操作
讲师详细介绍 修改 | 删除
选择: 全选 - 反选 - 不选 页码:   /      首页 第一页 首页 ">上一页 下一页 末页 ">下一页 ">末页
  调用: http://localhost:8080/appName/listTeacher.action?page=2   则显示所有教师信息中的第二页中的全部数据
/
本文档为【Hibernate+struts2+spring_实现分页实例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索