首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

通过SQL语句获得总记录数解决方法

2012-02-13 
通过SQL语句获得总记录数项目用的是SSH+EXT。现在作分页。分页肯定要得到总记录数。一般是 select count(*) f

通过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语句的时候有没有类似的操作

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

热点排行