hibernate 使用SQLQuery操作oracle数据库表中值为null的统计
来源:互联网 发布:淘宝流量高峰期时间段 编辑:程序博客网 时间:2024/06/05 07:48
为了实现当数据库统计在某个值为null或者返回值为null是显示此值 ,并且统计数为0
cid count
a1 11
b1(数据库中不存在的值) 0
c2 0
显然此语句不能满足,但cid 在表EVENTINFOALL中不存在时不能满足的.
后来经过改进实现方法如下
避免创建一个dual映射,直接采用了createSQLQuery直接用sql语句来完成.
具体实现的SQL语句:
cid count
a1 11
b1(数据库中不存在的值) 0
c2 0
- select cid, count(cid) as t
- from EVENTINFOALL
- where EOCCURTIME >?
- and cid in (?, ?,?)
- group by cid) b
后来经过改进实现方法如下
- List cidlist=new ArrrayList();
- int idsize=cidlist.size();
- StringBuffer hql=new StringBuffer("select a.cid as kcid , nvl(b.t, 0) as kcount from (select ? cid from dual");
- for(int i=1;i<idsize;i++){
- hql.append(" union select ? cid from dual");
- }
- hql.append(") a , (select cid,count(cid) as t from Eventinfoall where eoccurtime>(sysdate-2) and eoccurtime<sysdate and cid in (:setcid");
- for(int i=1;i<idsize;i++){
- hql.append(",:setcid");
- }
- hql.append(") group by cid ) b where a.cid = b.cid(+)");
- Query q=super.getSession().createSQLQuery(hql.toString()).addScalar("kcid",Hibernate.STRING).addScalar("kcount",Hibernate.INTEGER);
- for(int i=0;i<idsize;i++){
- PqmDfindIndex pdi=(PqmDfindIndex)cidlist.get(i);
- q.setString(i, pdi.getId().getCid());
- q.setString("setcid",pdi.getId().getCid());
- }
- return q.list();
- }else if(cidlist.size()==1){
- StringBuffer hql=new StringBuffer("select a.cid as kcid , nvl(b.t, 0) as kcount from (select ? cid from dual) a , (select cid,count(cid) as t from Eventinfoall where eoccurtime>(sysdate-2) and eoccurtime<sysdate and cid=:setcid group by cid ) b where a.cid = b.cid(+)");
- Query q=super.getSession().createSQLQuery(hql.toString()).addScalar("kcid",Hibernate.STRING).addScalar("kcount",Hibernate.INTEGER);
- PqmDfindIndex pdi=(PqmDfindIndex)cidlist.get(0);
- q.setString(0, pdi.getId().getCid());
- q.setString("setcid",pdi.getId().getCid());
- return q.list();
具体实现的SQL语句:
select a.cid, nvl(b.t, 0) from (select '01b' cid from dual union select '01f' cid from dual union select '010' cid from dual) a, (select cid, count(cid) as t from EVENTINFOALL where EOCCURTIME > to_date('2008-12-20 10:01:07', 'yyyy-mm-dd hh24:mi:ss') and cid in ('01b', '01f', '010') group by cid) b where a.cid = b.cid(+);
- hibernate 使用SQLQuery操作oracle数据库表中值为null的统计
- 使用 hibernate SQLQuery 实现动态表 操作
- hibernate映射数据库表如何使表中字段默认值生效(如更新当传来的值为null时不替换表中值)
- hibernate映射数据库表如何使表中字段默认值生效(如更新当传来的值为null时不替换表中值)
- 使用DetachedCriteria 模糊查询中值为null时的情况
- Hibernate SQLQuery 查询Oracle char类型结果为一个字符的解决方法
- Hibernate SQLQuery.addEntity的使用示例
- 使用Hibernate操作Oracle数据库表
- 使用Hibernate SQLquery实现动态表
- 使用Hibernate SQLquery实现动态表
- 使用Hibernate SQLquery实现动态表
- 使用Hibernate SQLquery实现动态表
- 使用hibernate SQLQuery实现动态表
- Hibernate中使用SQLQuery
- Hibernate中使用SQLQuery
- Hibernate使用SQLQuery
- Hibernate使用SQLQuery
- Hibernate SQLQuery使用
- 最新最简单的URL重写技术(可下载)
- XML 验证
- Libxml2使用简介
- 改进版的hibernate泛型dao(依赖spring)
- Linux环境下make和makefile详解
- hibernate 使用SQLQuery操作oracle数据库表中值为null的统计
- C++的XML编程经验――LIBXML2库使用指南
- 使用GWT发送HTTP请求
- 学习c#(方法的重写和隐藏)
- 摘来的 嘿嘿
- IPP2P模块修改版
- DB2数据库报“DB2 SQLerror:SQLCODE:-954,SQLSTATE:57011,SQLERRMC:null”解决办法
- 读取配置文件
- 图像处理相关网站