更新時(shí)間:2024-01-22 來(lái)源:黑馬程序員 瀏覽量:
HQL(Hibernate Query Language)是Hibernate查詢(xún)語(yǔ)言的簡(jiǎn)稱(chēng),它是一種面向?qū)ο蟮牟樵?xún)語(yǔ)言,與SQL查詢(xún)語(yǔ)言有些類(lèi)似,但它使用的是類(lèi)、對(duì)象和屬性的概念,而沒(méi)有表和字段的概念。
HQL查詢(xún)與SQL查詢(xún)相比,具有以下優(yōu)點(diǎn)。
·直接針對(duì)實(shí)體類(lèi)和屬性進(jìn)行查詢(xún),不用再編寫(xiě)繁瑣的SQL語(yǔ)句。
·查詢(xún)結(jié)果直接保存在List集合中,不用再次封裝。
·針對(duì)不同的數(shù)據(jù)庫(kù)會(huì)自動(dòng)生成不同的SQL語(yǔ)句。
在Hibernate提供的幾種檢索方式中,HQL是官方推薦的查詢(xún)語(yǔ)言,也是使用最頻繁的一種檢索方式,其具有以下主要功能。
·在查詢(xún)語(yǔ)句中設(shè)定各種查詢(xún)條件。
·支持投影查詢(xún),即僅檢索出對(duì)象的部分屬性。
·提供內(nèi)置聚集函數(shù),如sum()、min()和max()。
·支持分組查詢(xún),允許使用group by和having關(guān)鍵字。
·支持分頁(yè)查詢(xún)。
·支持子查詢(xún),即嵌套查詢(xún)。
·支持動(dòng)態(tài)綁定參數(shù)。
HQL的語(yǔ)法格式與SQL非常相似,并且在Hibernate中專(zhuān)門(mén)為HQL提供了一個(gè)Query查詢(xún)接口執(zhí)行各種復(fù)雜的查詢(xún)語(yǔ)句。HQL的完整語(yǔ)法格式如下所示:
[select/update/delete...] from...[where...] [group by...] [having...] [order by...] [asc/desc]
從上述語(yǔ)法格式中可以看出,HQL查詢(xún)與SQL查詢(xún)非常類(lèi)似。通常情況下,當(dāng)檢索表中的所有數(shù)據(jù)時(shí),查詢(xún)語(yǔ)句中可以省略select關(guān)鍵字,其示例如下所示:
String hql="from User";
需要注意的是,上述語(yǔ)句中User表示類(lèi)名,而不是表名,因此需要區(qū)分大小寫(xiě),而form關(guān)鍵字不區(qū)分大小寫(xiě)。