下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Hibernate查詢(xún)Hibernate查詢(xún)概述:數(shù)據(jù)查詢(xún)與檢索是Hibernate中的一個(gè)亮點(diǎn)。相對(duì)其他ORM實(shí)現(xiàn)而言,Hibernate提供了靈活多樣的查詢(xún)機(jī)制。標(biāo)準(zhǔn)化對(duì)象查詢(xún)(Criteria Query):以對(duì)象的方式進(jìn)行查詢(xún),將查詢(xún)語(yǔ)句封裝為對(duì)象操作。優(yōu)點(diǎn):可讀性好,符合Java 程序員的編碼習(xí)慣。缺點(diǎn):不夠成熟,不支持投影(projection)或統(tǒng)計(jì)函數(shù)(aggregation)Hibernate語(yǔ)言查詢(xún)(Hibernate Query Language,HQL):它是完全面向?qū)ο蟮牟樵?xún)語(yǔ)句,查詢(xún)功能非常強(qiáng)大,具備多態(tài)、關(guān)聯(lián)等特性 。Hibernate官方推薦使用HQL進(jìn)行查詢(xún)。
2、Native SQL Queries(原生SQL查詢(xún)):直接使用標(biāo)準(zhǔn)SQL語(yǔ)言或跟特定數(shù)據(jù)庫(kù)相關(guān)的SQL進(jìn)行查詢(xún)。Hibernate查詢(xún)語(yǔ)言(HQL)HQL用面向?qū)ο蟮姆绞缴蒘QL以類(lèi)和屬性來(lái)代替表和數(shù)據(jù)列支持多態(tài)支持各種關(guān)聯(lián)減少了SQL的冗余HQL支持所有的關(guān)系數(shù)據(jù)庫(kù)操作連接(joins,包括Inner/outer/full joins),笛卡爾積(cartesian products)投影(projection)聚合(Aggregation,max, avg)和分組(group)排序(Ordering)子查詢(xún)(Subqueries)SQL函數(shù)(SQL function calls)例子:
3、 Hibernate查詢(xún)語(yǔ)言(HQL)簡(jiǎn)單例子:查詢(xún)用戶(hù)名以“J”開(kāi)頭的所有用戶(hù)。Query query = session.createQuery(from User user where like J%); List users = query.list();復(fù)雜例子:從User和Group中查找屬于“admin”組的所有用戶(hù)。Query query = session.createQuery(“from User user where =admin”);如果用傳統(tǒng)的SQL則查詢(xún)語(yǔ)句如下:select user.userId as user
4、Id, as name, user.groupId as groupId, user.idCardId as idCardId from TBL_USER user, TBL_GROUP group where (group.groupName=admin and user.groupId=group.groupId)HQL查詢(xún)步驟獲取Hibernate的Session對(duì)象編寫(xiě)HQL語(yǔ)句session.createQuery(HQL)創(chuàng)建Query對(duì)象query.setXXX設(shè)置查詢(xún)參數(shù)query.list()得到查詢(xún)結(jié)果(持久化實(shí)體集)HQL最終轉(zhuǎn)換成SQL到數(shù)據(jù)庫(kù)執(zhí)行在
5、hibernate.cfg.xml中設(shè)置show_sql屬性為true輸出對(duì)應(yīng)的sql:trueHQL查詢(xún)參數(shù)?session.createQuery(“from User where id=?”). setInteger(0,1):參數(shù)名session.createQuery(“from User where id=:userid”). setInteger(“userid”,1)分頁(yè)控制setFirstResult(int firstResult);setMaxResults(int maxResults);HQL子句from子句from as 對(duì)象 where .結(jié)果為持久化類(lèi)的對(duì)象集合
6、關(guān)聯(lián)和連接隱式連接:from User u where u.group.id=2;返回User對(duì)象的集合顯式連接:from User u inner join u.group g with u.group.id=g.id where g.id=2返回以User對(duì)象和Group 對(duì)象組成的數(shù)據(jù)為元素的集合select子句選擇指定屬性或某個(gè)實(shí)體select from User as uselect u.group from User as u返回Listselect new list(u.id,) from User as u;返回java對(duì)象seleect new My
7、Class(u.id,) from User as u返回Mapselect new map(u.id,) from User as u聚合函數(shù)同SQL的聚合函數(shù)where子句篩選結(jié)果,一般使用隱式連接查詢(xún)from User as u where u.group.region.city=hz支持SQL的條件表達(dá)式(P485)子查詢(xún)HQL子查詢(xún)只可以出現(xiàn)在select子句或where子句中命名查詢(xún)?cè)谟成湮募信渲迷卦诔绦蛑型ㄟ^(guò)session.getNamedQuery(“queryName”)調(diào)用。在hibernate.cfg.xml的hibernate-mapping
8、元素中添加 在代碼中調(diào)用命名查詢(xún)Query query = session.getNamedQuery(getUserByName); query.setParameter(name, name); query.list();標(biāo)準(zhǔn)化對(duì)象查詢(xún)(Criteria Query)標(biāo)準(zhǔn)化查詢(xún)的三個(gè)基礎(chǔ)類(lèi)Criteria:代表一次查詢(xún)Criterion:代表一個(gè)查詢(xún)條件Restrictions:產(chǎn)生查詢(xún)條件的工具類(lèi)更具面向?qū)ο筇厣獵riteria查詢(xún)步驟獲取Hibernate的session對(duì)象session.createCriteria創(chuàng)建Criteria對(duì)象使用Restrictions的靜態(tài)方法創(chuàng)建C
9、riterion查詢(xún)條件向Criteria查詢(xún)中添加Criterion查詢(xún)條件criteria.list()方法返回結(jié)果集例子:標(biāo)準(zhǔn)化對(duì)象查詢(xún)(Criteria Query)簡(jiǎn)單例子:查詢(xún)用戶(hù)名以“J”開(kāi)頭的所有用戶(hù)。Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.ilike(“name, “J%); List users = criteria.list();原生SQL語(yǔ)句查詢(xún)可以利用數(shù)據(jù)庫(kù)本身特性原JDBC業(yè)務(wù)遷移 邏輯復(fù)雜的SQL調(diào)用存儲(chǔ)過(guò)程 通過(guò)SQLQuery接口完成 執(zhí)
10、行SQL語(yǔ)句查詢(xún)的步驟獲取Hibernate的session對(duì)象寫(xiě)SQL語(yǔ)句session.createSQLQuery創(chuàng)建查詢(xún)對(duì)象query.setXXX為SQL參數(shù)賦值query.addScalar()將查詢(xún)結(jié)果與標(biāo)量值相關(guān)聯(lián);query.addEntity()將查詢(xún)結(jié)果與實(shí)體對(duì)象相關(guān)聯(lián)query.list()返回實(shí)際結(jié)果集標(biāo)量查詢(xún):返回Object或Object為元素的Listsession.createSQLQuery(“select * from user_table”).addScalar(“name”,StandardBasicTypes.STRING). addScalar(“
11、id”,StandardBasicTypes.INTEGER).list()實(shí)體查詢(xún):返回指定實(shí)體對(duì)象為元素的Listsession.createSQLQuery(“select * from user_table where age:age and gender=:gender”).addEntity(User.class).setInteger(“age”,18).setString(“gender”,”female”).list()轉(zhuǎn)換成ValueObject通過(guò)Transformer對(duì)象將結(jié)果集的記錄轉(zhuǎn)換成為javabean對(duì)象(ValueObject)session.createSQLQuery(“select ca.id, as teacherName, as courseName, as roomName ca.time as courseTime,ca.num from course_arrange ca,course c,teacher t,room r where ca.course_id=c.id and ca.teacher_id=t.id and ca.room_id=r.id”).setResultTransformer(Transformers.aliasToBean(CourseArrangeBean
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB-T 26639-2011液壓機(jī)上鋼質(zhì)自由鍛件 通 用技術(shù)條件》專(zhuān)題研究報(bào)告
- 《GB-T 28010-2011紅木家具通 用技術(shù)條件》專(zhuān)題研究報(bào)告
- 《GBT 33345-2016 電子電氣產(chǎn)品中短鏈氯化石蠟的測(cè)定 氣相色譜 - 質(zhì)譜法》專(zhuān)題研究報(bào)告
- 《GB 19402-2012客運(yùn)地面纜車(chē)安全要求》專(zhuān)題研究報(bào)告
- 2026年遼寧經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)附答案詳解
- 《藥品生物檢定技術(shù)》創(chuàng)新課件-中醫(yī)藥面膜-天然養(yǎng)膚傳承千年智慧
- 項(xiàng)目融資建設(shè)期擔(dān)保合同
- 智能水表維修技師(中級(jí))考試試卷及答案
- 2025年重組抗原診斷試劑項(xiàng)目發(fā)展計(jì)劃
- 2025年醫(yī)用衛(wèi)生材料敷料合作協(xié)議書(shū)
- 收銀員高級(jí)工考試試題及答案
- 初級(jí)化驗(yàn)員考試試題及答案
- 甘肅慶陽(yáng)東數(shù)西算產(chǎn)業(yè)園區(qū)綠電聚合試點(diǎn)項(xiàng)目-330千伏升壓站及330千伏送出工程環(huán)境影響評(píng)價(jià)報(bào)告書(shū)
- 電商行業(yè)電商平臺(tái)大數(shù)據(jù)分析方案
- 《生理學(xué)》 課件 -第三章 血液
- 企業(yè)介紹設(shè)計(jì)框架
- 臺(tái)安N2變頻器說(shuō)明書(shū)
- 2025國(guó)家開(kāi)放大學(xué)《公共部門(mén)人力資源管理》期末機(jī)考題庫(kù)
- JG/T 545-2018衛(wèi)生間隔斷構(gòu)件
- 物業(yè)管理服務(wù)三方協(xié)議書(shū)全
- 瀝青攤鋪培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論