OA项目 分页功能总结二 实现较为复杂的分页功能(资料来源于传智播客汤阳光的视频教程)

OA项目 分页功能总结一中,我们的Hql语句相对较为简单,只能满足较少的用户需求,而且由于每条hql语句都不一样,业务逻辑需要重写,给我们的工作带来也很大的麻烦;

因此,我们今天准备将公共的代码抽取出来,放在baseDao中,来减少我们的一些代码。当然,这也不是我们最终的分页结果。现在我们接着上一次的内容进行:

1.在Action如(TopicAction)中,我们将上次Action中的代码改为:

准备主题列表的分页信息(使用公共的方法)
 String hql = "FROM Topic t WHERE t.forum=? ";
Object[] parameters = new Object[] { forum };
PageBean pageBean = replyService.getPageBean(pageNum, hql, parameters);

ActionContext.getContext().getValueStack().push(pageBean);


2.在baseDaoService中实现getPageBean(pageNum, hql, parameters);replyService继承它

   public PageBean getPageBean(int pageNum,String hql, Obeject[] parameters){

          int currentPage=pageNum;

         

         Query listQuery=getSession.createQuery(hql);

       for (int i = 0; i < parameters.length; i++) {
listQuery.setParameter(i, parameters[i]);
}
}
listQuery.setFirstResult((pageNum - 1) * pageSize);
listQuery.setMaxResults(pageSize);
List list = listQuery.list(); // 执行查询


// 查询总记录数
Query countQuery = getSession().createQuery("SELECT COUNT(*) " + queryListHQL);
if (parameters != null && parameters.length > 0) { // 设置参数
for (int i = 0; i < parameters.length; i++) {
countQuery.setParameter(i, parameters[i]);
}
}
Long count = (Long) countQuery.uniqueResult(); // 执行查询


return new PageBean(pageNum, pageSize, list, count.intValue());
}

         

  }

改进完成!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值