Hibernate查詢方式,
Hibernate查詢方式
1 OID查詢
(1)根據id查詢某一條記錄,返回對象
2 對象導航查詢
(1)根據id查詢某個公司,再查詢這個公司裡面所有的員工
Company c=session.get(Company.class, 1); Set<Worker> set= c.getWorkers(); for (Worker worker : set) { System.out.println(worker.getWname()+" "+worker.getWid()); }
3 HQL查詢
(1)Query對象,寫hql語句實現查詢
1 hql:hibernate query language,hibernate提供一種查詢語言,hql語言和普通sql很相似,區別:普通sql操作資料庫表和欄位,hql操作實體類和屬性
(2) 常用的hql語句
a、查詢所有: from 實體類名稱
b、條件查詢: from 實體類名稱 where 屬性名稱=?
c、排序查詢: from 實體類名稱 order by 實體類屬性名稱 asc/desc(倒序排列)
(3)使用hql查詢操作時候,使用Query對象
a、建立Query對象,寫hql語句
b、調用query對象裡面的方法得到結果
例:查詢所有
1 查詢所有客戶記錄
(1)建立Query對象,寫hql語句
(2)調用query對象裡面的list方法得到結果
Query query=session.createQuery("from Company"); List<Company> list=query.list();
條件查詢
hql條件查詢語句寫法:
1 from 實體類名稱 where 實體類屬性名稱=? and實體類屬性名稱=?
2 from 實體類名稱 where 實體類屬性名稱 like ?
3 from 實體類名稱 where 實體類屬性名稱 like ‘%百’ 是單引號
1 明確條件查詢
Query query=session.createQuery("from Company where cid=?and cname=?"); query.setParameter(0, 1); query.setParameter(1,"百度"); List<Company> list=query.list();
2 模糊條件查詢
Query query=session.createQuery("from Company where cname like ?");query.setParameter(0, "百%"); List<Company> list=query.list();
排序查詢
1 hql排序語句寫法
(1)from 實體類名稱 order by 實體類屬性名稱 asc/desc(desc為倒敘)
Query query=session.createQuery("from Company order by cid desc"); List<Company> list=query.list();
投影查詢
1 投影查詢:查詢表中部分欄位的值
2 投影查詢hql語句寫法:
(1)select 實體類屬性名稱1, 實體類屬性名稱2 from 實體類名稱
(2)注意: select 後面不能寫 * ,不支援的
3 具體實現
Query query=session.createQuery("select cname from Company "); List<String> list=query.list();
2 查詢所有: from 實體類名稱
4 QBC查詢
(1)Criteria對象
5 本地sql查詢
(1)SQLQuery對象,使用普通sql實現查詢