日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate Query Language(HQL)。

發布時間:2024/9/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate Query Language(HQL)。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hibernate Query Language(HQL)提供了十分強大的功能,推薦大家使用這種查詢方式。HQL具有與SQL語言類似的語法規范,只不過SQL針對表中字段進行查詢,而HQL針對持久化對象,它用來取得對象,而不進行update、delete和insert等操作。而且HQL是完全面向對象的,具備繼承、多態和關聯等特性。
1.from子句
from字句是最簡單的HQL語句,例如 from Student,也可以寫成select s from Student s。它簡單地返回Student類的所有實例。
除了Java類和屬性的名稱外,HQL語句對大小寫并不敏感,所以在上一句HQL語句中,from與FROM是相同的,但是Student與student就不同了,所以上述語句寫成from student就會報錯。下列程序演示如何通過執行from語句取得所有的Student對象。
Query query = session.createQuery(“from Student”);
List list = query.list();
for (int i=0;i<list.size(); i++)
{
Student stu = (Student)list.get(i);
System.out.println(stu.getName());
}
如果執行HQL語句“from Student, Course”,并不簡單地返回兩個對象,而是返回這兩個對象的的笛卡兒積,這類似于SQL語句中字段的全外連接。在實際應用中,像“from Student, Course”這樣的語句幾乎不會出現。
2.select子句
有時并不需要得到對象的所有屬性,這時可以使用select子句進行屬性查詢,例如,select s.name from Student s。下面程序演示如何執行這個語句:
Query query = session.createQuery(“select s.name from Student s”);
List list = query.list();
for (int i=0;i<list.size(); i++) {
String name = (String)list.get(i);
System.out.println(ame());
}
如果要查詢兩個以上的屬性,查詢結果會以數組的方式返回,如下所示:??Query query = session.createQuery(“select s.name, s.sex from Student as s”);
List list = query.list();
for (int i=0;i<list.size(); i++) {
Object obj[] = (Object[])list.get(i);
System.out.println(ame(obj[0] + “的性別是:” +obj[1]));
}
在使用屬性查詢時,由于使用對象數組,操作和理解都不太方便,如果將一個object[]中所有成員封裝成一個對象就方便多了。下面的程序將查詢結果進行了實例化:
Query query = session.createQuery(“select new Student(s.name, s.sex) from Student s”);
List list = query.list();
for (int i=0;i<list.size(); i++) {
Student stu = (Student)list.get(i);
System.out.println(stu.getName());
}
要正確運行以上程序,還需要在Student類中加入一個如下的構造函數:
public Student(String name, String sex)
{
this.name = name;
this.sex = sex;
}
3.統計函數查詢
可以在HQL中使用函數,經常使用的函數有:
count():統計記錄條數
min():求最小值
max():求最大值
sum():求和
age():求平均值
例如,要取得Student實例的數量,可以編寫如下HQL語句:
select count(*) from Student
取得Student的平均年齡的HQL語句如下:
select avg(s.age) from Student as s
可以使用distinct去除重復數據:
select distinct s.age from Student as s
4.where子句
HQL也支持子查詢,它通過where子句實現這一機制。where子句讓用戶縮小要返回的實例的列表范圍,例如下面語句會返回所有名字為“Bill”的Student實例:
Query query = session.createQuery("from Student as s where s.name='Bill' ");
where子句允許出現的表達式包括了SQL中可以使用的大多數情況:
數學操作:+,-,*,/
真假比較操作:=,>=,<=,<>,!=,like
邏輯操作:and,or, not
字符串連接:||
SQL標量函數:例如upper()和lower()
如果子查詢返回多條記錄,可以用以下的關鍵字來量化:
all:表示所有的記錄。
any:表示所有記錄中的任意一條。
some:與any用法相同。
in:與any等價。
exists:表示子查詢至少要返回一條記錄。
例如,下面語句返回所有學生的年齡都大于22的班級對象:
from Group g where 22<all (select s.age from g.students s)
下述語句返回在所有學生中有一個學生的年齡等于22的班級:
from Group g where 22=any (select s.age from g.students s)
或者
from Group g where 22=some (select s.age from g.students s)
或者
from Group g where 22 in (select s.age from g.students s)
5.order by 子句
查詢返回的列表可以按照任何返回的類或者組件的屬性排序:
from Student s order by s.name asc
asc和desc是可選的,分別代表升序或者降序。
6.連接查詢
與SQL查詢一樣, HQL也支持連接查詢,如內連接、外連接和交叉連接。
inner join: 內連接
left outer join:左外連接
right outer join:右外連接
full join: 全連接,但不常用
下面重點講解內連接查詢,左外連接和右外連接查詢和內連接大同小異,而全連接幾乎不怎么使用。
inner join可以簡寫為join,例如在查詢得到Group對象時,內連接取得對應的Student對象,實現的程序如下。
……//打開Session,開啟事務
Student??stu = null;??//聲明Student實例
Group??group = null; //聲明Group實例
Query query = session.createQuery("from Group g join g.students");
List list = query.list();
Object obj[] = null;??//聲明對象數組
for(int i=0;i<list.size();i++)??{
obj = (Object[])list.get(i); //取得集合中的第i個數組
group = (Group)obj[0];??//group是數組中第一個對象
stu = (Student)obj[1];?? //stu是數組中第二個對象
System.out.println(stu.getName() + "屬于:" +group.getName() );
}
……//提交事務,關閉Session

總結

以上是生活随笔為你收集整理的Hibernate Query Language(HQL)。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆精品一区二区 | av色吧 | 神马午夜一区二区 | 欧美自拍区 | 四川丰满妇女毛片四川话 | 美女av影院| 欧美77777| 欧美日本中文字幕 | 日韩三级av在线 | 最新福利在线 | 黄色一级大片在线免费看国产一 | 欧美色v| 精品无码久久久久久久久果冻 | www.com国产| 欧美久草| 日日摸夜夜添狠狠添久久精品成人 | 日日碰碰| 毛片一级在线观看 | 国产精品久久久久久人妻精品动漫 | 麻豆国产在线播放 | 丝袜亚洲综合 | 看片一区 | 久久视频中文字幕 | 欧美视频一区二区三区四区在线观看 | 久草综合在线观看 | 99免费在线| 天天做天天看 | 中文字幕在线视频网站 | 亚洲色图制服诱惑 | 欧美大白屁股 | 国产精品久久久久久久久久久久午夜片 | 操人在线观看 | 麻豆视频网站入口 | 中文字幕免费在线播放 | 福利视频在线导航 | 欧美激情黄色 | 美女隐私黄www网站动漫 | 日韩aa视频 | 久久成人乱码欧美精品一区二区 | 免费精品在线 | 精品国产91乱码一区二区三区 | 在线免费视频一区二区 | 黑人巨大猛烈捣出白浆 | 97在线影院| 亚洲青涩在线 | 午夜欧美视频 | 日本特级黄色录像 | 无码精品一区二区三区在线 | 波多野结衣调教 | 西方裸体在线观看 | 张柏芝亚洲一区二区三区 | jizz欧洲| 亚洲女人被黑人巨大进入 | 欧美日韩a | 147人体做爰大胆图片成人 | 男生和女生操操 | 一级久久久久久 | 国产伦精品一区二区三区视频免费 | 99爱精品视频 | 一曲二曲三曲在线观看中文字幕动漫 | 狠狠看 | 不卡av在线 | 全黄性性激高免费视频 | 什么网站可以看毛片 | 青娱乐在线免费视频 | 国产伦精品一区二区三区精品 | 中文字幕精品三区 | 三级一区二区 | 秋霞二区| 天天干天天操天天摸 | 色亚洲色图 | 四虎影视免费永久大全 | 爱爱爱网 | 婷婷精品在线 | 伊人网在线免费观看 | 久久成人动漫 | 三级黄色短视频 | 亚洲一区自拍偷拍 | 操碰在线观看 | 极品销魂美女少妇尤物 | 韩国中文三级hd字幕 | 少妇一级淫片免费观看 | 国产免费黄色录像 | 美女福利片 | 99在线精品视频 | 精品一区二区久久 | 亚洲免费中文 | 99精品在线免费观看 | 麻豆视频网址 | 性欧美video另类hd尤物 | 97影院在线午夜 | 蜜乳av一区二区三区 | 日韩免费精品 | 天天狠天天干 | 午夜精品久久久久久久99热黄桃 | 玖草视频在线观看 | 欧美男同又粗又长又大 | 麻豆传媒网站 | 19禁大尺度做爰无遮挡电影 |