hibernate 中的count(*) 、group by 、group by having
之前的一篇文章中我們也看到了count(*) 方法,這裡我們來學習count(*) 和group by 的查詢!
一、hql方式實現
1、使用hql語句來實現count(id) /count(*)
Query query= session.createQuery("select count(*) from Event");
int count= ((Number)query.uniqueResult()).intValue();
其中的Event 是javabean ,這個bean對應的也就是events這個表。
2、hql 查詢count(id)/count(*)
3、hql實現count(id)/count(*)/group byString hql= "select count(id) ,name from Event where name =:name"; Query query = session.createQuery(hql); Map<String,Object> map= new HashMap<String,Object>(); map.put("name", "whd2"); query.setProperties(map); List list= query.list(); Iterator it= list.iterator(); while(it.hasNext()){ Object[] obj= (Object[])it.next(); // 注意這裡的型別轉化 int count= ((Number)obj[0]).intValue(); System.out.println("count:"+count); System.out.println(obj[0] +"-----"+obj[1]); }
String hql="select count(id),name from Event group by name "; Query query = session.createQuery(hql); List list= query.list(); Iterator it= list.iterator(); while(it.hasNext()){ Object[] res=(Object[]) it.next(); //注意這裡的型別轉化 int count= ((Number)res[0]).intValue(); System.out.println("count"+count); System.out.println(res[0]+" "+res[1]); }
4、hql實現分組統計count(id)/count(*)/group by having
查詢出名稱相同的個數大於1的人
String hql="select count(id),name from Event group by name having count(id)>1 "; Query query = session.createQuery(hql); List list= query.list(); Iterator it= list.iterator(); while(it.hasNext()){ Object[] res=(Object[]) it.next(); //注意這裡的型別轉化 int count= ((Number)res[0]).intValue(); System.out.println("count"+count); System.out.println(res[0]+" "+res[1]); }
二、sql方式實現
1、使用sql語句來實現count(id)/count(*)
SQLQuery query= session.createSQLQuery("select count(id) from events");
//注意這裡如果寫Integer則會報錯,必須是Number 應為hibernate升級原因!
int count = ((Number)query.uniqueResult()).intValue();
其中events就是表名,而Number是因為hibernate 升級為3.2的原因,也就是為了相容!
2、使用sql語句來實現count(id)/count(*)的方法
// 其中的events是表名而不是javabean
List list= session.createSQLQuery("select count(*) ,name from events").list();
Iterator it= list.iterator();
while(it.hasNext()){
Object[] obj= (Object[])it.next();
//注意這裡的型別轉化
int a= ((Number)obj[0]).intValue();
System.out.println(obj[0] +"-----"+obj[1] +" "+a);
}
3、使用sql語句實現 count(id)/count(*)/ group by
String sql ="select count(id) ,name from events group by name";
Query query= session.createSQLQuery(sql);
List list= query.list();
Iterator it= list.iterator();
while(it.hasNext()){
Object[] obj=(Object[]) it.next();
//注意這裡的型別轉化
int count=((Number)obj[0]).intValue();
System.out.println("count: "+count);
System.out.println(obj[0]+" "+obj[1]);
}
4、使用sql語句實現count(id)/count(*)/ group by having
String sql ="select count(id) ,name from events group by name having name=:name";
Query query= session.createSQLQuery(sql);
query.setParameter("name", "whd2");
List list= query.list();
Iterator it= list.iterator();
while(it.hasNext()){
Object[] obj=(Object[]) it.next();
//注意這裡的型別轉化
int count=((Number)obj[0]).intValue();
System.out.println("count: "+count);
System.out.println(obj[0]+" "+obj[1]);
}
其實這些都不難,也沒有什麼知識點,但為什麼寫那,因為在當時專案中
用的時候怎麼獲取都報錯,其實查詢的過程是沒問題的,就是在int count=((Number)obj[0]).intValue(); 這個地方出了問題,所以一直報異常獲取不到資料,為什麼報異常那,是因為寫成了Integer 而不是Number所以要注意hibernate 升級到3.2 之後要寫成Number而不是Integer !
相關推薦
hibernate 中的count(*) 、group by 、group by having
之前的一篇文章中我們也看到了count(*) 方法,這裡我們來學習count(*) 和group by 的查詢! 一、hql方式實現 1、使用hql語句來實現count(id) /count(*) Query query= session.createQuery("
mysql中:單表distinct、多表group by查詢去除重複記錄
單表的唯一查詢用:distinct 多表的唯一查詢用:group by distinct 查詢多表時,left join 還有效,全連線無效, 在使用mysql時,有時需要查詢出某個欄位不重複的記錄,雖然mysql提供有distinct這個關鍵字來過濾掉多餘的重複記錄只保留一
DataTable中進行Distinct、Group by、Join、Create
using System; using System.Collections; using System.Data; namespace Common { /**/ /// <summary> /// DataSet助手 參考資料:h
hive------ Group by、join、distinct等實現原理
map etc 條件 val log in use ins none 操作 1. Hive 的 distribute by Order by 能夠預期產生完全排序的結果,但是它是通過只用一個reduce來做到這點的。所以對於大規模的數據集它的效率非常低。在很多
關於group by 、group by having、where group by與 group by order by
姓名 函數 學生 art sco 分數 現在 大於 數學 轉載:https://blog.csdn.net/qq_28007533/article/details/72859474 現有表 score name kecheng fenshu 張三
mysql之資料型別和select語句(group by、 limit)
mysql之資料型別的理解 mysql資料型別之整形 mysql資料型別之浮點型 mysql資料型別之日期時間型 mysql資料型別之字元型 刪除記錄(單表刪除) delete from 表單 where id=5 select
07-Hive高階查詢order by、group by
宣告:未經本人允許,不得轉載哦! 哈嘍,大家好。這兩天就要高考了,我原本是一名物理老師,這一屆初高中的學生帶完,估計就要開始找大資料崗位的工作了。目前掌握的是技能有java+linux++mysql+hadoop+hive+hbase,正在學習的是shell,計劃2016年接著要學習
一個sql的四種寫法:sum...case.when、sum if、select(select..)、group by
select (select SUM(LOANEE_AMOUNT) FROM t_zg_loanee_apply a WHERE DELETE_STATUS = 0 ) as 'JE', (select SUM(LOANEE_AMOUNT) FROM t_zg_loanee_apply a WH
Oracle DB 對行進行分組-group by、having
通過列出多個GROUP BY列,可以返回組和子組的彙總結果。GROUP BY子句對行進行分組,但不保證結果集的順序。要對組進行排序,請使用ORDER BY子句。 在示例中,包含GROUP BY子句的SELECT語句按如下方式進行求值: • SELECT子句指定要檢索的列: - EMPLOYEES表中的部門I
distinct、order by、 group by實現原理
前言 除了常規的Join語句之外,還有一類Query語句也是使用比較頻繁的,那就是ORDERBY,GROUP BY以及DISTINCT這三類查詢。考慮到這三類查詢都涉及到資料的排序等操作,所以我將他們放在了一起,下面就針對這三類Query語句做基本的分析。 ORDE
sql 異常<除非另外還指定了 TOP、OFFSET 或 FOR XML,否則,ORDER BY 子句在視圖、內聯函數、派生表、子查詢和公用表表達式中無效。>
select sel top percent 異常 子句 cor 查詢 表達 問題:當子查詢內存在ORDER BY 字句時查詢會報錯 SQL: SELECT * FROM ( SELECT * FROM USER ORDER BY USER_CORD ) S. 解
Hibernate中的事務隔離問題(臟讀、不可重復讀、幻讀)
center 錯誤 新增 str 數據庫操作 持久性 有一個 tex rep Hibernate中的事務隔離問題(臟讀、不可重復讀、幻讀) 1.事務的特性 事務的四個特性: 1)原子性:事務是進行數據庫操作的最小單位,所以組成事務的各種操作是不可分割的 2)一致性:組成事務
Oracle 中count(1) 、count(*) 和count(列名) 函數的區別
select sdn 快的 包含 varchar2 into 要去 tails lan 1)count(1)與count(*)比較: 1、如果你的數據表沒有主鍵,那麽count(1)比count(*)快2、如果有主鍵的話,那主鍵(聯合主鍵)作為count的條件也比count
[Database] Oracle 中的where 可以後接group by
emp dep group AS where rom rac mage ima SELECT e.DEPTNO,COUNT(e.EMPNO) FROM emp e WHERE e.DEPTNO=10 GROUP BY e.DEPTNO [Database] Oracle
基於C實現Word Count 將字符數、單詞數、行數,統計結果以指定格式輸出到默認文件中
計算 具體實現 post 及其 sp2 註釋 程序設計 cnblogs 基本 基於C實現Word Count ---系統分析與設計課程個人項目作業 1. 項目地址: [gitee地址] (https://gitee.com/little-baby/WordCount-by-
linux關於用戶和組的幾個配置文件—/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow
分隔 間隔 oem 配置文件 目錄 msg 密碼 login oldboy 1./etc/passwd存儲用戶信息 [root@oldboy ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bi
mysql中group by和order by同時使用無效的替代方案
前言 最近一年由於工作需要大部分使用的都是NoSql資料庫,對關係型資料庫感覺越來越陌生,一個由group by和order by 引發的血案由此而生。在此做個記錄,以備不時之需。 需求(得到所有barCode的最新的一條資料) 首先,看一下整體的表結構。
在mysql中使用group by和order by取每個分組中日期最大一行資料
轉載自:https://blog.csdn.net/shiyong1949/article/details/78482737 自己實際使用的時候group by 單列欄位 兩種方式獲取資料一致,博主情況未知,有待驗證多group by 在mysql中使用group by進行分組後取某一列的最大
分享知識-快樂自己:Hibernate 中 get() 和 load()、sava、update、savaOrUpdate、merge,不同之處及執行原理?
1):Hibernate 中 get() 和 load() 有什麼不同之處? 1)Hibernate的 get方法,會確認一下該id對應的資料是否存在,首先在session快取中查詢,然後在快取中查詢,還沒有就查詢資料庫,資料庫中沒有就返回null。 2)Hibernate的 load方法載入
資料庫中count(1)、count(*)、count(列名)的總結
含義: 1、count(*) :統計所有的行數,包括為null的行(COUNT(*)不單會進行全表掃描,也會對錶的每個欄位進行掃描。而COUNT('x')或者COUNT(COLUMN)或者COUNT(0)等則只進行一個欄位的全表掃描)。 2、count(1):計算一共有多少符合條件的行(其實