HQL接口分页查询

 

如下Query提供的方法可以实现分页:

 

1. setFirstResult

 

    从第几条开始取记录

 

2. setMaxResult

  

    一次取多少条记录

 

 

使用此方法进行分页,具有可移植性,下面写一段代码:

 

HibernateUtil.java

private static final SessionFactory sessionFactory;

static {

      sessionFactory = new configuration.buildSessoinFactory();
     //如果在hibernate.cfg.xml中配置过的话(<mapping resource="com/sidi/vo/UserBean.hbm.xml" />)
     //sessionFactory = new configuration().configure().buildSessoinFactory();
}

private HibernateUtil () {

}

publicv static SessionFactory getFactory () {

       return sessionFactory;
}

 

 

hibernate.properties

hibernate.current_session_content_class thread;

 

 

new action:listUser

execute () {

      String target = "success";

      String pageStr = request.getParameter ("page");

      int page = 1;

      try {

           page = Integer.parseInt (pageStr);

      } catch (NumberFormatException e) {

           page = 1;
      }

      SessionFactory factory = HibernateUtil.getFactory ();
      Session session = null;

      try {

           session = factory.getCurrentSession();
           session.beginTransaction();

           Query q = session.creatQuery("from UserBean")
                 .setFirstResult(page-1)*5
                 .setMaxResults(5);
           List list = q.list();

           q = session.creatQuery("select count(*) from UserBean");

           Integer i = (Integer)q.uniqueResult();
           Integer totalpage = new Integer((i.intValue()+4)/5);

           request.setAttribute("list",list);
           request.setAttribute("totalpage",totalpage);
           request.setAttribute("page",new Integer(page));

       } catch (HibernateExeception e) {

              session.getTranction().rollback();
              e.printStackTrace();
              throw e;

       } finally {

            if (session!=null) {

                 session.close();
                 session = null;
            }
       }

       return mapping.findForward(target);
}

 

 

listuser.jsp

<table align="center">
<logic:iterate id="user" name="list">
<tr>
    <td>${user.id}</td>
    <td>${user.name}</td>
    <td>${user.pw}</td>
</tr>
</logic:iterate>
</table>

分页部分
    <table align="center">
   <tr>
    <td><a href="listUser.do">首页</a></td>

    <td><logic:lessEqual name="page" value="1">上一页</logic:lessEqual></td>
    <td><logic:greaterThan name="page" value="1"><a href="listUser.do?page=${page-1}">上一页

</a></logic:greaterThan></td>

    
    <td><logic:lessEqual name="page" value="${totalpage}"><a href="listUser.do?

page=${page+1}">下一页</a></logic:lessEqual></td>
   <td><logic:greaterThan name="page" value="${totalpage}">下一页</logic:greaterThan></td>

    <td><a href="listUser.do?page=${totalPage}">尾页</a></td>
</tr>
</table>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值