版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章Criteria
查詢(xún)HQL優(yōu)化從哪幾個(gè)方面考慮?Hibernate數(shù)據(jù)加載方式有哪些?有什么區(qū)別?
HQL聯(lián)接查詢(xún)有幾種方式?在映射文件中如何定義命名查詢(xún)?如何使用本地SQL查詢(xún)?如何使用Criteria查詢(xún)數(shù)據(jù)如何使用Criteria進(jìn)行查詢(xún)排序如何使用Criteria進(jìn)行查詢(xún)分頁(yè)使用Criteria查詢(xún)租房信息使用Criteria查詢(xún)實(shí)現(xiàn)租房信息分頁(yè)顯示掌握Criteria查詢(xún)使用Criteria進(jìn)行查詢(xún)排序使用Criteria進(jìn)行查詢(xún)分頁(yè)用到特定于數(shù)據(jù)庫(kù)的SQL語(yǔ)句,程序本身會(huì)依賴(lài)于特定的數(shù)據(jù)庫(kù)不了解SQL
語(yǔ)句,恐怕對(duì)使用HQL帶來(lái)困難Hibernate提供的Criteria查詢(xún)幫助我們解決了這種問(wèn)題Criteria查詢(xún)采用面向?qū)ο蠓绞椒庋b查詢(xún)條件,又稱(chēng)為對(duì)象查詢(xún)對(duì)SQL
語(yǔ)句進(jìn)行封裝采用對(duì)象的方式來(lái)組合各種查詢(xún)條件由Hibernate
自動(dòng)產(chǎn)生SQL
查詢(xún)語(yǔ)句Criteria由Hibernate
Session進(jìn)行創(chuàng)建SessionFactory
sessionFactory
=
newConfiguration().configure().buildSessionFactory();Session
session
=
sessionFactory.openSession();Criteria
criteria
=
session.createCriteria(User.class);List
result
=
criteria.list();Iterator
it
=
result.iterator();while
(it.hasNext())
{User
user
=
(User)
it.next();System.out.println("用戶(hù)名:"+user.getName());}session.close();sessionFactory.close();創(chuàng)建Criteria對(duì)象使用Criteria的list()方法獲得數(shù)據(jù),list()方法返回List
實(shí)例criteria.add(Restrictions.eq("name",
"bob"));Iterator
it
=
result.iterator();while
(it.hasNext())
{User
user
=
(User)
it.next();System.out.println("用戶(hù)名:"+user.getName());}session.close();sessionFactory.close();創(chuàng)建Criteria對(duì)象使用aSdeds(s)添ion加F查actory
sessionFactory
=
List
result
=
criteria.list();查詢(xún)條件:name='admin'詢(xún)條件new
Configuratio返n(回).c條on件fi實(shí)gu例re().buildSessionFactory();Session
session=sessionFactory.openSession();Criteria
criteria
=
session.createCriteria(User.class);演示示例:Criteria查詢(xún)方法說(shuō)
明Restrictions.eq()對(duì)應(yīng)SQL的等于(’=’)Restrictions.allEq()使用Map,使用key/value進(jìn)行多個(gè)相等的值的比對(duì)Restrictions.gt()對(duì)應(yīng)SQL的大于(‘>’)Restrictions.ge()對(duì)應(yīng)SQL的大于等于(‘>=’)Restrictions.lt()對(duì)應(yīng)SQL的小于(‘<’)Restrictions.le()對(duì)應(yīng)SQL的小于等于(‘<=’)Restrictions.between()對(duì)應(yīng)SQL的between子句Restrictions.like()對(duì)應(yīng)SQL的like子句Restrictions.in()對(duì)應(yīng)SQL的in子句Restrictions.and()對(duì)應(yīng)SQL的andRestrictions.or()對(duì)應(yīng)SQL的orRestrictions.not()對(duì)應(yīng)SQL的not需求說(shuō)明:以標(biāo)題(title)、價(jià)格(price)范圍和面積(floorage)范圍為條件對(duì)租房信息進(jìn)行綜合的“模糊
”查詢(xún)通過(guò)控制臺(tái)接收查詢(xún)條件,若條件為空則表示查詢(xún)?nèi)客瓿蓵r(shí)間:15分鐘SessionFactory
sessionFactory
=new
Configuration().configure().buildSessionFactory();Session
session
=
sessionFactory.openSession();
Criteria
criteria
=
session.createCriteria(House.class);criteria.add(Restrictions.or(Restrictions.eq("price",new
Double(2300)),Restrictions.like("title","%地鐵%")));List
result
=
criteria.list();Iterator
it
=
result.iterator();while
(it.hasNext())
{House
house=(House)it.next();System.out.println("標(biāo)題:"+house.getTitle());}如果屬性條件很多,使用Restrictions
也不方便Hibseersnsaiotne.c提lo供se(E);xample
的create()方法來(lái)建立Exasmespsiloen實(shí)Fac例tor,y.cEloxsae(m);ple
實(shí)現(xiàn)了Criteria
接口House
house
=
new
House();house.setPrice(new
Double(2000));house.setFloorage(new
Integer(40));SessionFactory
sessionFactory
=
newConfiguration().configure().buildSessionFactory();Session
session
=
sessionFactory.openSession();Criteria
criteria
=
session.createCriteria(House.class);criteria.add(Example.create(house));List
results
=
criteria.list();Iterator
it
=
results.iterator();while(it.hasNext()){House
h=
(House)it.next();System.out.println("標(biāo)題:"+h.getTitle()+"
價(jià)格"+h.getPrice());}essionFa查詢(xún)條件,添加到house對(duì)象中創(chuàng)建Criteria對(duì)象通過(guò)Example的create()方法來(lái)建立Example實(shí)例作為查詢(xún)條件Hibernate
在自動(dòng)生成SQL
語(yǔ)句時(shí)將自動(dòng)過(guò)濾掉對(duì)session象.c的lo空se屬();性,根據(jù)有非空屬性值的屬性生成查詢(xún)條件s
ctory.close();
演示示例:使用Example常見(jiàn)調(diào)試問(wèn)題及解決辦法代碼規(guī)范問(wèn)題共性問(wèn)題集中講解如何使用Criteria查詢(xún)?Restrictions常用限定查詢(xún)方法有哪些?
Criteria查詢(xún)?nèi)绾问褂脤?duì)象作為查詢(xún)條件?Criteria查詢(xún)不僅能組合出SQL中where子句的功能,還可以組合出排序查詢(xún)功能使用org.hibernate.criterion.Order對(duì)結(jié)果進(jìn)行排序排序的方法為:asc()desc()SessionFactory
sessionFactory
=
new
Configuration().configure().buildSessionFactory();Session
session
=
sessionFactory.openSession();Criteria
criteria
=
session.createCriteria(House.class);criteria.addOrder(Order.desc("price"));List
result
=
criteria.list();Iterator
it
=
result.iterator();while
(it.hasNext())
{創(chuàng)建Criteria對(duì)象加入Order
條件以?xún)r(jià)格降序的方式排列House
house
=
(House)
it.next();System.out.println("標(biāo)題:"
+
house.getTitle()
+
"
價(jià)格"+
house.getPrice());}session.close();sessionFactory.close();演示示例:Criteria排序練習(xí)——使用Criteria實(shí)現(xiàn)排序需求說(shuō)明:已知房屋租金為2000元,面積為75平米要求查詢(xún)出與之類(lèi)似的其他房屋信息并以房屋編號(hào)升序的方式進(jìn)行排序完成時(shí)間:15分鐘Criteria的setMaxResults()方法可以限定查詢(xún)返回?cái)?shù)據(jù)的行數(shù)Criteria的setFirstResult()設(shè)定查詢(xún)返回結(jié)果的第一行數(shù)據(jù)的位置結(jié)合以上Criteria的兩個(gè)方法即可實(shí)現(xiàn)簡(jiǎn)單分頁(yè)ssionFase
ctory.close();SessionFactory
sessionFactory=newHCiboenrfnigauter:astieolne(c)t.c*ofnrofimgu(res(e)l.ebcutilrdoSwe_s.s*,iornoFwancutmoryro()w;n創(chuàng)u建m_Crfritoemria對(duì)象
(Sselsescitotnhsise_s.sidioans=ids4e_s3s_i,otnhFisa_c.tuosrye.ro_pidenaSseussseior2n_()4;_3_,this_.type_idaCs
rtiyteprei3a_c4r_it3e_r,iath=iss_e.strieoent._cirde
aseCstrrieteerti4a_(H4_o3u_s,et.hcilsa_s.sti)t;le
as
title4_3_,this_.price
as
price4_3_,this_.pubdate
as
pubdate4_3_,thcirsit_e.frlioao.sreatgFeirasstRfelosourlat(g3e);4_3_,this_.contact設(shè)a定s
c查o詢(xún)nt返ac回t4結(jié)_3果_,的ucsreirte2r_i.aid.saestMida0x_R0e_s,uultsse(r22);_.name
as
name0_0第_一,u行se數(shù)r2據(jù)_.的pa位ss置word
aspLaissstwreosrdu0lt_s0=_,curisteri2a_.l.itsetl(e)p;hone
as
telephone0_0_,user2_.usernameaIsteursaetornr
aitm=er0e_s0u_l,tsu.siterr2a_to.irs(a);dmin
as
isadm限in定0_查0_詢(xún),t返yp回e3數(shù)_據(jù).id的asidw3h_i1le_(,ityhpaes3N_e.txytp()e){_name
as
type2_3_1_,street4_.行id數(shù)as
id2_2_,street4_.street_name
as
street2_2_2_,street4_.district_id
asdistricHto3u_2s_e2h_
=fr(oHmoujbsiet.)hito.nuesxet(t)h;is_
inner
join
jbit.users
user2_
onthis_.Suyssetre_mid.=ouust.eprr2i_n.tildn(i"n標(biāo)ne題r
:joi"n+h.oguestTetitylpe(e)+ty"pe價(jià)3_格o:n"+h.getPrice());this_.type_id=type3_.id
inner
join
street
street4_
onth}is_.street_id=street4_.id
)
row_
where
rownum
<=
?)
whereroswesnsuimon_.c>lo?
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年貨物運(yùn)輸合同規(guī)定運(yùn)輸方式與責(zé)任
- 2025年度歷史建筑保護(hù)拆墻工程合作協(xié)議4篇
- 2024豬場(chǎng)租賃承包合同
- 2024節(jié)能減排協(xié)議書(shū)
- 《中樞性高熱患者的護(hù)理與治療》課件
- 2025年度新媒體運(yùn)營(yíng)與公關(guān)合作服務(wù)合同范本4篇
- 2024年05月云南廣發(fā)銀行昆明分行招考筆試歷年參考題庫(kù)附帶答案詳解
- 2025年度大數(shù)據(jù)分析服務(wù)合同樣本8篇
- 2025變頻器代理商銷(xiāo)售合同:市場(chǎng)拓展與品牌推廣合作3篇
- 二零二五年度高端酒店集團(tuán)食材供應(yīng)與服務(wù)合同3篇
- 常見(jiàn)老年慢性病防治與護(hù)理課件整理
- 履約情況證明(共6篇)
- 云南省迪慶藏族自治州各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 設(shè)備機(jī)房出入登記表
- 六年級(jí)語(yǔ)文-文言文閱讀訓(xùn)練題50篇-含答案
- 醫(yī)用冰箱溫度登記表
- 零售學(xué)(第二版)第01章零售導(dǎo)論
- 大學(xué)植物生理學(xué)經(jīng)典05植物光合作用
- 口袋妖怪白金光圖文攻略2周目
- 光伏發(fā)電站集中監(jiān)控系統(tǒng)通信及數(shù)據(jù)標(biāo)準(zhǔn)
- 三年級(jí)下冊(cè)生字組詞(帶拼音)
評(píng)論
0/150
提交評(píng)論