日期:2014-05-20  浏览次数:21048 次

通过SQL语句获得总记录数
项目用的是SSH+EXT。
现在作分页。分页肯定要得到总记录数。一般是 select count(*) from 表名。
但是当查询条件稍微复杂一点后就不行了。
例如 A表有十条数据 B表有两条数据,且B中的两个id在A中都有相等的ID
select * from A LEFT join b on a.id=b.id
这样 查询结果就有11条数据。而select count(*) from A却还是10.
请问怎么才能通过传入的SQL语句进行高效率的count(*)操作
Java code

QueryTranslatorImpl queryTranslator = new QueryTranslatorImpl(
                                hql, hql, Collections.EMPTY_MAP,
                                (SessionFactoryImplementor) session
                                        .getSessionFactory());
                        queryTranslator.compile(Collections.EMPTY_MAP, false);
                        String tempSQL = queryTranslator.getSQLString();
                        System.out.println(tempSQL);
                        // 将对应转换完成的SQL语句 套入查询模版
                        String countSQL = "select count(*) from (" + tempSQL
                                + ") tmp_count_t";
                        // 创建Query 对象
                        System.out.println(countSQL);
                        Query query = session.createSQLQuery(countSQL);


这是通过传入的hql语句惊醒的count(*)操作。请问传入SQL语句的时候有没有类似的操作

------解决方案--------------------
在相应的地方把字段 写成 变量,传入到公用方法,返回查询结果应该就可以了