北大青鳥(niǎo)y2java課件1使用hibernate開(kāi)發(fā)租房系統(tǒng)_第1頁(yè)
北大青鳥(niǎo)y2java課件1使用hibernate開(kāi)發(fā)租房系統(tǒng)_第2頁(yè)
北大青鳥(niǎo)y2java課件1使用hibernate開(kāi)發(fā)租房系統(tǒng)_第3頁(yè)
北大青鳥(niǎo)y2java課件1使用hibernate開(kāi)發(fā)租房系統(tǒng)_第4頁(yè)
北大青鳥(niǎo)y2java課件1使用hibernate開(kāi)發(fā)租房系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論