请教:SSH如何获得数据库中记录条数?

zhenghanqiu 2010-04-29 09:26:12

我写了个通用的方法,可以根据自己传入的HQL作相应的查询, 问题是如何得到 总记录数呢? :

public PageModel searchByHql(PageModel pageModel, String hql) {
List list = new ArrayList();
final int pageNo = pageModel.getPageNo();
final int pageSize = pageModel.getPageSize();
try {
Session session=this.getHibernateTemplate().getSessionFactory().getCurrentSession();
list = session.createQuery(hql).setFirstResult((pageNo - 1) * pageSize).setMaxResults(pageSize).list();
pageModel.setTotalRecords(this.getTotalRecords(hql));
pageModel.setList(list);

}catch(Exception e) {
e.printStackTrace();
throw new AppException("查询异常");
}
return pageModel;

}

如代码中的红色部分 本来我写一个方法 select count(*) +hql 但是很多hql语句中都有 order by等 就查不出来啊!

诸位前辈有什么好办法不,最好有一个通用的方法,


最好不是先把所有的都查出来 在取大小


...全文
234 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenghanqiu 2010-04-29
  • 打赏
  • 举报
回复
分全给你了
zhenghanqiu 2010-04-29
  • 打赏
  • 举报
回复
搞定了 :

private int getTotalRecords(String hql) {
Long totalRecords = 0L;
String s1;

int i = hql.toLowerCase().indexOf("from");
int j = hql.toLowerCase().indexOf("order by");
if (j > 0)
s1 = (new StringBuilder()).append("select count(*) ").append(
hql.substring(i, j)).toString();
else
s1 = (new StringBuilder()).append("select count(*) ").append(
hql.substring(i, hql.length())).toString();

try {
totalRecords = (Long) this.getSession().createQuery(s1).uniqueResult();
return totalRecords.intValue();
} catch (RuntimeException e) {
return -1;
}
}
colin_pxx 2010-04-29
  • 打赏
  • 举报
回复
list.size()不就可以了吗
colin_pxx 2010-04-29
  • 打赏
  • 举报
回复
谢谢哈

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧