Hibernate+Spring+Struts2整合开发中的一个分页显示方案.docVIP

  • 1
  • 0
  • 约9.62千字
  • 约 15页
  • 2017-02-09 发布于重庆
  • 举报

Hibernate+Spring+Struts2整合开发中的一个分页显示方案.doc

HibernateSpringStruts2整合开发中的一个分页显示方案

Hibernate+Spring+Struts2整合开发中的一个分页显示方案分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。   1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法: public interface MemberDao{   //省略了其他的代码   /** *//**    * 分页查询    * @param hql 查询的条件    * @param offset 开始记录    * @param length 一次查询几条记录    * @return    */   public List queryForPage(final String hql,final int offset,final int length);   /** *//**    * 查询所有记录数    * @param hql 查询的条件    * @return 总记录数    */   public int getAllRowCount(String hql); }   2、DAO层实现类MemberDaoImpl对上面两个方法的实现如下: public class MemberDaoImpl extends HibernateDaoSupport implements MemberDao {     //省略了其他的代码     /** *//**    * 分页查询    * @param hql 查询的条件    * @param offset 开始记录    * @param length 一次查询几条记录    * @return    */   public List queryForPage(final String hql,final int offset,final int length){     List list = getHibernateTemplate().executeFind(new HibernateCallback(){       public Object doInHibernate(Session session) throws HibernateException,SQLException{         Query query = session.createQuery(hql);         query.setFirstResult(offset);         query.setMaxResults(length);         List list = query.list();         return list;       }     });     return list;   }   /** *//**    * 查询所有记录数    * @return 总记录数    */   public int getAllRowCount(String hql){     return getHibernateTemplate().find(hql).size();   } } 细心的读者会发现,这个类继承了HibernateDaoSupport类,HibernateDaoSupport是Spring提供的对Hibernate支持的类,getHibernateTemplate().executeFind(new HibernateCallback(){})方法中的参数,我们使用了接口回调,在其参数内,我们能像原生的Hibernate一样调用query.setFirstResult(offset)和query.setMaxResults(length)来实现分页查询功能。   3、下面我们来新建一个保存分页信息的类PageBean,具体代码如下: public class PageBean {   private List list;    //要返回的某一页的记录列表   private int allRow;     //总记录数   private int totalPage;    //总页数   private int currentPage;  //当前页   private int pageSize;    //每页记录数   private boolean isFirstPage;  //是否为第一页   private boolean isLastPage;    //是否为最后一页   pri

文档评论(0)

1亿VIP精品文档

相关文档