七. Hibernate的高級查詢

1.HQL 關聯查詢的類型

HQL支持SQL的所有關聯類型

1.內關聯(*)

2.外關聯

3.交叉關聯

2.HQL內關聯查詢

內關聯查詢只能查詢滿足關聯條件的對象的集合。

SQL語法:

select a.xxx, b.xxx from A a inner join B b on a.fk=b.pk

數據庫表關聯依靠FK.

案例:

– 查詢每個員工的姓名和部門的名稱

select a.empname,b.deptname from OA_employee a inner join oa_department b on a.deptno=b.deptno

HQL語法

(1)返回指定屬性的內關聯

select a.xxx, b.xxxx from A a inner join a.b b

(2)返回關聯對象的內關聯

from A a inner join a.b b

案例:

– 查詢每個員工的姓名和部門的名稱

select em.name, dm.name from EmployeeModel em inner join em.department dm

Hibernate Model類間關聯依靠屬性。

3.HQL內關聯抓取查詢

爲了能查詢一個對象時,將其關聯的對象也要立即檢索出來,HQL提供了抓取內關聯查詢。

語法:

from A a inner join fetch a.b b

返回的是A對象的集合

4.HQL外關聯查詢

1.左外關聯查詢

HQL語法:

from A a left outer join a.b b

2.右外關聯查詢

from A a right outer join a.b b

3.全外關聯查詢(MySQL不支持)

from A a full outer join a.b b

5.HQL分類彙總查詢

1.分類彙總語句

(1) group by 子句

功能:確定分類的屬性

語法:group by 屬性,屬性,。。。

select em.department.name, avg(em.salary) from EmployeeModel em group by em.department.name

(2) having子句

功能:對分類彙總後的結果進行篩選

語法:having 邏輯表達式

案例:

取得部門平均工資大於3000的部門的彙總工資
(部門名,彙總工資)

select em.department.name, sum(em.salary)
from EmployeeModel em
group by em.department.name
having em.department.name='財務部'
and avg(em.salary) >3000

2.分類彙總函數

(1) count()

(2) min()

(3) max()

(4) avg()

(5) sum()

6.HQL select語句

1.功能:指定返回的對象的屬性。

省略則返回對象。

2.語法:

select 屬性,屬性,…

3.案例:

返回員工對象的集合 List

from EmployeeModel

返回姓名的集合:List

select em.name from EmployeeModel em

返回年齡的集合:List

select em.age from EmployeeModel em

返回工資的集合:List

select em.salary from EmployeeModel em

返回姓名和年度對的集合:List<Object[]>

select em.name,em.age from EmployeeModel em

返回員工對象和部門對象對的集合:List<Object[]>

from EmployeeModel em inner join em.department dm

返回員工對象的集合 List

select em from EmployeeModel em inner join em.department dm

返回員工對象的集合 List

from EmployeeModel em inner join fetch em.department dm
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章