版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、hibernate查詢進階Criteria查詢使用步驟:1、使用Session實例 的createCriteria()方法創(chuàng)建Criteria對象2、使用工具類Restrictions的方法為Criteria對象設(shè)置查詢條件,另外,如果有需要,還可以使用Order工具類的方法設(shè)置排序方式;如果有需要,還可以使用Projections工具類的方法進行統(tǒng)計和分組。3、使用Criteria對象的list()方法進行查詢并返回結(jié)果案例一/創(chuàng)建Criteria對象 指定面向哪個類查詢Criteria cr = session.createCriteria(Student.class);/指定查詢的條件c
2、r.add(Restrictions.eq(name, zhangsan);/開始查詢List list = cr.list();Student stu = (Student)list.get(0);System.out.println(stu.getName();Criteria Query常用的查詢限制方法案例二查詢名字等于zhangsan,或者年齡大于等于11的學(xué)生:Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.or(Restrictions.eq(name, zhangsan),Restr
3、ictions.ge(age, 11);cr.list();案例三查詢名字等于zhangsan,或者年齡大于等于11或者家鄉(xiāng)是chengdu的學(xué)生:Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.or(Restrictions.or(Restrictions.eq(name, zhangsan),Restrictions.eq(home, chengdu),),Restrictions.ge(age, 11);cr.list();Restrictions使用MatchMode/查詢姓名以he開頭的學(xué)
4、生Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.like(“name”, “he”, MatchMode.START)List list = cr.list();Student stu = (Student)list.get(0);MatchMode案例四/查詢姓名等于zs,或者等于lisi,或者等于wr的學(xué)生 String names = “zs”, “l(fā)isi”, “wr”Criteria cr = session.createCriteria(Student.class);cr.add(Re
5、strictions.in(“name”, names)List list = cr.list();Student stu = (Student)list.get(0);對查詢結(jié)果進行排序/查詢出姓名以F開頭的學(xué)生,并對結(jié)果集以score字段按升序排序Criteria cr = session.createCriteria(Student.class);cr.add(Restrictions.like(“name”, “F%”);cr.addOrder(Order.asc(“score”);List list = cr.list();Student stu = (Student)list.ge
6、t(0);-如果是降序,則是Order.desc(score)案例五/分頁查詢Criteria criteria = session.createCriteria(Student.class); criteria.setFirstResult(2); criteria.setMaxResults(5); List students = criteria.list();案例六/面向Student,求出所有學(xué)生的平均年齡Criteria criteria = session.createCriteria(Student.class); criteria.setProjection(Projecti
7、ons.avg(age); List avgAge = criteria.list();System.out.print(avgAge.get(0);Projections類的常用方法案例七/按age字段進行分組,求出各個組的人數(shù)/即求出各個年齡的人數(shù)ProjectionList projectionList = PjectionList(); projectionList.add(Projections.groupProperty(age); projectionList.add(Projections.rowCount(); Criteria criteria
8、= session.createCriteria(Student.class); criteria.setProjection(projectionList); List objs = criteria.list(); 案例八/按班級分組,求出各個班級的平均成績ProjectionList projectionList = PjectionList(); projectionList.add(Projections.groupProperty(class); projectionList.add(Projections.avg(score); Criteria cr
9、iteria = session.createCriteria(Student.class); criteria.setProjection(projectionList); List objs = criteria.list(); 案例九根據(jù)已知物件(即已經(jīng)存在的對象)進行查詢 Student stu=new Student ();stu.setClass(first);Criteria criteria = session.createCriteria(Student .class); Example e = Example.create(stu);e.excludeProperty(id
10、);e.excludeProperty(score);criteria.add(e); List list = criteria.list(); Example說明:默認情況下值為null的屬性將被排除。 如果你的持久類的屬性有int等類型,則須給它賦值,因為默認情況下它的值不是null,而是0。當(dāng)然這里也可以自己去設(shè)置example,比如:.excludeZeroes() .excludeProperty()案例十設(shè)定SQL范本:查詢name以he開頭的學(xué)生Criteria criteria = session.createCriteria(Student.class); criteria.
11、add(Restrictions.sqlRestriction( LIKE (?), he%, Hibernate.STRING); List list = criteria.list(); -最后對應(yīng)的SQL語句select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where this_.name LIKE (?)案例十一/查詢年齡在20到40之間的學(xué)生Criteria criteria = session.createCriteria(Stud
12、ent.class); Integer ages = new Integer(20), new Integer(40); Type types = Hibernate.INTEGER, Hibernate.INTEGER; criteria.add(Restrictions.sqlRestriction( alias.age BETWEEN (?) AND (?), ages, types); List list = criteria.list(); -注意:alias.age中的alias的寫法是固定的,你可以認為它代表的就是當(dāng)前記錄所描述的實體對象案例十二-在一對多的案例中設(shè)置fetch連
13、接查詢Criteria cr = session.createCriteria(TOrder.class);/所謂fetchMode就是設(shè)置fetch的模式:是連接查詢,還是不連接查詢cr.setFetchMode(items, FetchMode.JOIN);List list = cr.list();-FetchMode的取值有JOIN、SELECT,JOIN表示連接查詢,-不延遲加載,SELECT表示延遲加載(lazy=false除外)案例十三(了解)離線查詢離線查詢所謂離線查詢,就是建立一個DetachedCriteria對象,將查詢的條件等指定好,然后在session.beginTr
14、ansaction()后將這個對象傳入。通常這個對象可以在表示層建立,然后傳入業(yè)務(wù)層進行查詢?;蛘吒唵蔚恼f,DetachedCriteria不像Criteria那樣需要由session來創(chuàng)建(我們稱之為在線),而是不需要受session約束,它自己就可以創(chuàng)建,并且可以由任意來執(zhí)行。 DetachedCriteria依然可以像Criteria那樣使用Criterion 和 Projection 設(shè)置查詢條件,可以設(shè)置 FetchMode( 聯(lián)合查詢抓取的模式 ) ,設(shè)置排序方式。DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Student.class);detachedCriteria.add(Restrictions.eq(name,cheng); Session session = SessionFactory.getCurrentSession();Student stu= null;Transaction ts = session.beginTran
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年長春貨運資格證考試70題
- 2025年粵教新版必修1物理下冊階段測試試卷含答案
- 機構(gòu)改革人員協(xié)議書(2篇)
- 2025年外研版選擇性必修1歷史上冊月考試卷
- 2025年中圖版九年級歷史上冊階段測試試卷
- 2025年廣東理工職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點試題含答案解析
- 2025年安徽國際商務(wù)職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年安康職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 農(nóng)學(xué)研究答辯報告
- 2025年北京電子科技職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 《環(huán)境管理學(xué)》教案
- 2025年蛇年年度營銷日歷營銷建議【2025營銷日歷】
- (一模)寧波市2024學(xué)年第一學(xué)期高考模擬考試 數(shù)學(xué)試卷(含答案)
- 父母贈與子女農(nóng)村土地協(xié)議書范本
- 集團母子公司協(xié)議書
- 中醫(yī)病證診斷療效標準
- 南安市第三次全國文物普查不可移動文物-各鄉(xiāng)鎮(zhèn)、街道分布情況登記清單(表五)
- ITSMS-D-038 問題記錄表范本
- 第1課+古代亞非(教學(xué)設(shè)計)【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 物業(yè)客服管家的培訓(xùn)課件
- 2024年房地產(chǎn)行業(yè)的樓市調(diào)控政策解讀培訓(xùn)
評論
0/150
提交評論