




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Hibernate查詢Hibernate查詢概述:數(shù)據(jù)查詢與檢索是Hibernate中的一個亮點。相對其他ORM實現(xiàn)而言,Hibernate提供了靈活多樣的查詢機制。標(biāo)準(zhǔn)化對象查詢(Criteria Query):以對象的方式進(jìn)行查詢,將查詢語句封裝為對象操作。優(yōu)點:可讀性好,符合Java 程序員的編碼習(xí)慣。缺點:不夠成熟,不支持投影(projection)或統(tǒng)計函數(shù)(aggregation)Hibernate語言查詢(Hibernate Query Language,HQL):它是完全面向?qū)ο蟮牟樵冋Z句,查詢功能非常強大,具備多態(tài)、關(guān)聯(lián)等特性 。Hibernate官方推薦使用HQL進(jìn)行查詢。
2、Native SQL Queries(原生SQL查詢):直接使用標(biāo)準(zhǔn)SQL語言或跟特定數(shù)據(jù)庫相關(guān)的SQL進(jìn)行查詢。Hibernate查詢語言(HQL)HQL用面向?qū)ο蟮姆绞缴蒘QL以類和屬性來代替表和數(shù)據(jù)列支持多態(tài)支持各種關(guān)聯(lián)減少了SQL的冗余HQL支持所有的關(guān)系數(shù)據(jù)庫操作連接(joins,包括Inner/outer/full joins),笛卡爾積(cartesian products)投影(projection)聚合(Aggregation,max, avg)和分組(group)排序(Ordering)子查詢(Subqueries)SQL函數(shù)(SQL function calls)例子:
3、 Hibernate查詢語言(HQL)簡單例子:查詢用戶名以“J”開頭的所有用戶。Query query = session.createQuery(from User user where like J%); List users = query.list();復(fù)雜例子:從User和Group中查找屬于“admin”組的所有用戶。Query query = session.createQuery(“from User user where =admin”);如果用傳統(tǒng)的SQL則查詢語句如下: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查詢步驟獲取Hibernate的Session對象編寫HQL語句session.createQuery(HQL)創(chuàng)建Query對象query.setXXX設(shè)置查詢參數(shù)query.list()得到查詢結(jié)果(持久化實體集)HQL最終轉(zhuǎn)換成SQL到數(shù)據(jù)庫執(zhí)行在
5、hibernate.cfg.xml中設(shè)置show_sql屬性為true輸出對應(yīng)的sql:trueHQL查詢參數(shù)?session.createQuery(“from User where id=?”). setInteger(0,1):參數(shù)名session.createQuery(“from User where id=:userid”). setInteger(“userid”,1)分頁控制setFirstResult(int firstResult);setMaxResults(int maxResults);HQL子句from子句from as 對象 where .結(jié)果為持久化類的對象集合
6、關(guān)聯(lián)和連接隱式連接:from User u where u.group.id=2;返回User對象的集合顯式連接:from User u inner join u.group g with u.group.id=g.id where g.id=2返回以User對象和Group 對象組成的數(shù)據(jù)為元素的集合select子句選擇指定屬性或某個實體select from User as uselect u.group from User as u返回Listselect new list(u.id,) from User as u;返回java對象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é)果,一般使用隱式連接查詢from User as u where u.group.region.city=hz支持SQL的條件表達(dá)式(P485)子查詢HQL子查詢只可以出現(xiàn)在select子句或where子句中命名查詢在映射文件中配置元素在程序中通過session.getNamedQuery(“queryName”)調(diào)用。在hibernate.cfg.xml的hibernate-mapping
8、元素中添加 在代碼中調(diào)用命名查詢Query query = session.getNamedQuery(getUserByName); query.setParameter(name, name); query.list();標(biāo)準(zhǔn)化對象查詢(Criteria Query)標(biāo)準(zhǔn)化查詢的三個基礎(chǔ)類Criteria:代表一次查詢Criterion:代表一個查詢條件Restrictions:產(chǎn)生查詢條件的工具類更具面向?qū)ο筇厣獵riteria查詢步驟獲取Hibernate的session對象session.createCriteria創(chuàng)建Criteria對象使用Restrictions的靜態(tài)方法創(chuàng)建C
9、riterion查詢條件向Criteria查詢中添加Criterion查詢條件criteria.list()方法返回結(jié)果集例子:標(biāo)準(zhǔn)化對象查詢(Criteria Query)簡單例子:查詢用戶名以“J”開頭的所有用戶。Criteria criteria = session.createCriteria(User.class); criteria.add(Restrictions.ilike(“name, “J%); List users = criteria.list();原生SQL語句查詢可以利用數(shù)據(jù)庫本身特性原JDBC業(yè)務(wù)遷移 邏輯復(fù)雜的SQL調(diào)用存儲過程 通過SQLQuery接口完成 執(zhí)
10、行SQL語句查詢的步驟獲取Hibernate的session對象寫SQL語句session.createSQLQuery創(chuàng)建查詢對象query.setXXX為SQL參數(shù)賦值query.addScalar()將查詢結(jié)果與標(biāo)量值相關(guān)聯(lián);query.addEntity()將查詢結(jié)果與實體對象相關(guān)聯(lián)query.list()返回實際結(jié)果集標(biāo)量查詢:返回Object或Object為元素的Listsession.createSQLQuery(“select * from user_table”).addScalar(“name”,StandardBasicTypes.STRING). addScalar(“
11、id”,StandardBasicTypes.INTEGER).list()實體查詢:返回指定實體對象為元素的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通過Transformer對象將結(jié)果集的記錄轉(zhuǎn)換成為javabean對象(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題開題報告:新課程背景下高中生物學(xué)課程開設(shè)及教學(xué)實施的研究
- 課題開題報告:新課標(biāo)下美術(shù)校本課程的研發(fā)與實施策略研究
- 課題開題報告:新發(fā)展格局下的高水平教育對外開放體系建設(shè)研究
- 2025年大學(xué)輔導(dǎo)員招聘考試題庫:學(xué)生職業(yè)生涯規(guī)劃指導(dǎo)課程大綱編制試題
- 二年級數(shù)學(xué)(上)計算題專項練習(xí)
- 其它新型平面顯示器項目安全風(fēng)險評價報告
- 出納個人述職報告的結(jié)構(gòu)與內(nèi)容
- 寵物店創(chuàng)業(yè)計劃書范文
- 電力公司應(yīng)急預(yù)案演練與實施計劃
- 信息技術(shù)行業(yè)履行一崗雙責(zé)情況報告范文
- Unit 7 Careers Lesson 1EQIQ 說課稿-2024-2025學(xué)年高中英語北師大新版(2019)選擇性必修第三冊
- 《中國體育發(fā)展歷程》課件
- 洞簫曲譜200首帶目錄
- 餐飲行業(yè)組織架構(gòu)及員工職責(zé)分析
- 汽車4S店售后營銷案例
- 2024年徐州工業(yè)職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 上海市第一至十八屆高一物理基礎(chǔ)知識競賽試題及答案
- 角磨機安全培訓(xùn)課件
- GB/T 15972.40-2024光纖試驗方法規(guī)范第40部分:傳輸特性的測量方法和試驗程序衰減
- 巨量千川營銷師(初級)認(rèn)證考試題庫(附答案)
- 打造現(xiàn)代與傳統(tǒng)相融合的室內(nèi)設(shè)計
評論
0/150
提交評論