日期:2014-05-18  浏览次数:20748 次

封装一个有分页功能的dao基类
我想封装一个带有分页功能的dao基类,
其中有这样一个方法
QueryResult getResultByHql(final String hql, final Map params, final int pageNo, final int pageSize)
queryresult里面包含了查询结果以及分页信息

现在遇到了一个问题,根据hql得到查询记录总数的hql不好处理,以前是这样处理的
public String getResultCountHql(String hql){
int index = hql.indexOf("from");
String countHql = "select count(*) " + hql.substring(index);
return countHql;
}

可是如果有group by distinct 之类的语句,这样得到的记录总数就不正确。
请问有什么好的方法?

------解决方案--------------------
我也遇到过这个问题,如果想要各种各样的sql正确的转化成countSql是不现实的,我们公司的也只是针对oracle做了这样的处理select count(*) from (...) ,并且个人觉得这样实现不好,你可以将有group by 和 distinct的以及
转化后执行错误的sql抛出异常告诉调用者该分页函数不支持,让调用者自己计算记录数