日韩性视频-久久久蜜桃-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)。的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产小视频网站 | 久久久久国产 | 成人激情视频在线播放 | 日韩中文在线视频 | 涩涩国产| 国产精品99久久久久久人 | 息与子五十路翔田千里 | 最近中文字幕在线观看视频 | 美女狠狠干 | 国产精品18久久久久久无码 | av一区二区不卡 | 日韩一二三级 | 亚洲中文无码久久 | 99色网站| 青青草91 | 久久99久久精品 | 性猛交富婆╳xxx乱大交麻豆 | 久久国产加勒比精品无码 | 麻豆网页| 日韩在线观看免费全 | 67194少妇| 一级片手机在线观看 | 九九视频免费观看 | 欧美久久久久久久 | 好吊色这里只有精品 | 欧美亚洲国产成人 | 91看大片 | youjizz国产| 日本中文字幕在线观看视频 | 污免费在线观看 | 一区二区视屏 | 欧美性69| 超碰997| 成人午夜久久 | 后进极品美女白嫩翘臀 | 国产欧美另类 | 久久久国产精品久久久 | 狼人av在线 | 最新地址在线观看 | 中文字字幕一区二区三区四区五区 | 国产精品人人妻人人爽 | 爱情岛亚洲品质自拍极速福利网站 | 夜夜躁狠狠躁日日躁 | 亚洲国产精品视频在线观看 | 亚洲一区二区精品在线 | av日韩精品 | 成人av专区 | 亚洲精品水蜜桃 | 开心激情网五月天 | 97福利影院| 高清国产一区二区三区 | 日本91av | 中文字幕免费在线视频 | 国产精品区一区二区三 | 97se综合 | 中文字幕av一区 | 无码久久精品国产亚洲av影片 | 国产露出视频 | 日日骚av一区二区 | jul023被夫上司连续侵犯 | www.日日夜夜 | 奇米777色| 国产寡妇色xxⅹ交肉视频 | 一卡二卡精品 | 先锋影视av| 美女超碰在线 | 伊人久久久久久久久久 | 欧美一级片在线免费观看 | 亚洲av片不卡无码久久 | 国产91高清 | 先锋影音一区二区三区 | 日韩黄色精品视频 | 午夜精品在线 | 日日草草 | 国产精品一区二区6 | 久久99一区 | 天堂无乱码 | 伊人蕉| 亚洲xx站 | 麻豆传媒视频入口 | 黄色网在线播放 | 尤物视频在线 | 成人里番精品一区二区 | 国产一区二区三区乱码 | va婷婷| 一二三区视频 | www.污视频| 九九视频在线免费观看 | 91av网址| 国产精品视频在线免费观看 | 激情视频在线免费观看 | 激情超碰在线 | 激情五月俺也去 | 亚洲成人第一页 | 亚洲三区在线播放 | 毛片大全 | 天天干天天操天天插 | 九九热最新视频 | 超碰666|