spring + hibernate +mysql 的问题!

来源:百度知道 编辑:UC知道 时间:2024/06/09 09:36:53
我想统计下我数据库中多个表的记录数,这多个表还有不同种状态,如审核、未审核……
我用的是List
我知道这个List类的对象的一个size()方法可以得到我想要的记录数,但是这样我就得写多个List
List a=this.aaservice.(mm);
List b=this.aaservice.(cc);
Integer num1=a.size();
Integer num2=b.size();
request.setAttribute("num1",num1);
request.setAttribute("num2",num2);
这样做程序执行效率很低,这样做相同于做了多次的查询,对于做统计太不好了。望java高手们谁帮帮我解决这个问题,谢谢……
介于下面的回答我只能对bio1984比较赞同,不过也没有给我更好的方法了。最后我采用了只查一次然后在页面上用jstl的循环另加JS实现了,对js变量进行累加!我觉得这是最好的办法!这样把问题从服务器端降到了客户端进行解决!OK实现了!

不去查还要获得数据库的记录数,你认为这可能实现吗?
亦或是你不想每次都去查?那就把这个数据放到缓存里面,但是这样的话又得去管理和实现缓存,这会添加程序的复杂性,应该不是你想要的。

还有,你说的性能问题一般是不存在的,真正的开发中这种代码经常见到,因为我要遍历,我就必须得到List的长度,不是吗?

还有:如果涉及到多状态统计,建议你先把所有数据拿出来放到List里面,在Java程序中遍历List并做判断:
int i=0,j=0,k=0....
if(status==1) i++;
else if (status==2) j++;
else if (status==3) k++
...

直接在数据库查询语言里写:
select count(###)么~~
这样行吗??
返回的结果去出来就是一整数么~~(类型转换)

分类统计只能是一个统计查一次数据库,没有想到能一次查出多个表的统计方法(不过也可以查询出所有的表存到一个LIST里循环一次把所有的要统计字段累加起来,这样的查询速度会随着数据量的增大而逐渐慢下来)。不过你可以优化一下查询语句,不用select * from Table。直接查你的统计字段的个数会大幅度提高查询效率的。select count(status) from Table。不妨版主试一下吧!

思想就是错的!!
本来多种情况就要进行多个查询,这个无法避免,但是我们不要这样查询,直接换成sql函数count();
这样才是最佳方法,hibernate照样支持!

在进行数据库表查询操作时,自己可以写一个SQL语句来统计记录嘛~!
像 select count(*) from....group by ......