实现分页功能

hibernate.uti

/**
  * 获取某张表的记录条数
  *
  * @param hql
  *            含条件的HQL语句
  * @param reg
  *            占位符对应的参数列表
  * @return 返回符合条件的记录条数
  */
 public int queryCount(String hql, Object... reg) {
  Session session = null;
  Query query = null;
  int count = 0;
  try {
   session = factory.openSession();
   query = session.createQuery(hql);
   for (int i = 0; reg != null && i < reg.length; i++) {
    query.setString(i, reg[i].toString());
   }
   count = Integer.parseInt(query.list().size()+"");
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (session != null) {
    session.close();
   }
  }
  return count;
 }

/**
  * 根据条件查询多条记录
  *
  * @param <T>返回集合中存放的对象类型
  * @param hql
  *            查询所需的HQL语句
  * @param arg
  *            HQL语句中?站位符号对应参数的顺序数组
  * @param size
  *            每页显示的条数[可选]
  * @param pages
  *            要的是第几页的数据从1开始[可选]
  * @return 符合条件的对象集合
  */
 public <T> List<T> queryListPages(int pages, int size, String hql,
   Object... arg) {
  Session session = null;
  Query query = null;
  List<T> list = null;
  try {
   session = factory.openSession();
   query = session.createQuery(hql);
   for (int i = 0; arg != null && i < arg.length; i++) {
    query = query.setString(i, arg[i].toString());
   }
   if (size != 0 && pages != 0) {
    query.setFirstResult(size * (pages - 1)); // 分页时候设定数据开始位置
    query.setMaxResults(size);      // 设置每页显示多少条
   }
   list = query.list();
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (session != null)
    session.close();
  }

  return list;
 }

l

dao.impl

/**实现分页*/

public <T> List<T> queryByPage(String hql, int pages, int size,
   Object... param) {
  // TODO Auto-generated method stub
  return hc.queryListPages(pages, size, hql, param);
 }

/**查询总记录数*/

public int findCount(String hql, Object... param) {
  // TODO Auto-generated method stub
  return hc.queryCount(hql, param);
 }

 

biz.impl

/**查询总记录数*/

public int findcount() {
  // TODO Auto-generated method stub
  return baseDao.findCount("from P_Login");
 }

/**实现分页*/

 public List<P_Login> query(int pages, int size) {
  // TODO Auto-generated method stub
  return baseDao.queryByPage("from P_Login", pages, size);
 }

action

public class QueryAllUsersAction {
 private String message;
 private P_Login login;
 private List<P_Login> list;
 private int page;//当前页
 private int size = 5;// 每页显示大小
 private int total;// 总页数
/**省略get,set方法*/

public String execute() {
  // 判断当前页是否为第一页
  if (page <= 0) {
   page = 1;
  }
  // 判断总记录数是否为0
  if (total <= 0) {
   // 获得总记录数
   total = biz.findcount();
   // 获得总页数
   total = total % size == 0 ? total / size : total / size + 1;
  }

  if(page>total){
   page=total;
  }
  list=biz.query(page, size);
  if(list.size()>0)
   return "success";
   else{
    setMessage("查询失败!");
    return "faile";
   }
 }

jsp

<div class=pages align="right">
          <%
           int i = 1;
          %>
           <a href="action?page=1" class="prev">首页</a>
           <a href="action?page=${page-1 }" class="last">上一页</a>
            <c:forEach begin="1" end="${total}" var="n">
             <c:if test="${page==n}">
              <a class="pgcurrent" href="action?page=<%=i%>"><font color="red" style=" font-size: 25px; border-color: blue; "><%=i++%></font></a>
             </c:if>
             <c:if test="${page!=n}">
              <a href="action?page=<%=i%>"><%=i++%></a>
             </c:if>
            </c:forEach>
            <a href="action?page=${page+1 }" class="next">下一页</a>
             <a href="action?page=${total }" class="next">尾页</a>

         </div>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值