成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Criteria查詢語句的補充:高級特性

開發 后端
本篇文章講述Hibernate中Criteria 查詢語句的補充。在代碼中提供的一對多的例子中,作者使用復合查詢,查詢所有用戶及其地址。

以下代碼對Criteria查詢做了一些補充。代碼內部有注釋。

  1. package com.shiryu.otm;  
  2.  
  3. import java.util.Iterator;  
  4. import java.util.List;  
  5.  
  6. import org.hibernate.Criteria;  
  7. import org.hibernate.Session;  
  8. import org.hibernate.SessionFactory;  
  9. import org.hibernate.Transaction;  
  10. import org.hibernate.cfg.Configuration;  
  11. import org.hibernate.criterion.DetachedCriteria;  
  12. import org.hibernate.criterion.Expression;  
  13. import org.hibernate.criterion.Order;  
  14. import org.hibernate.criterion.Projections;  
  15. import org.hibernate.criterion.Subqueries;  
  16.  
  17. public class Test2 {  
  18.     public static void main(String args[]) {  
  19.         SessionFactory factory = new Configuration().configure().buildSessionFactory();  
  20.         Session session = factory.openSession();  
  21.         Transaction tr = session.beginTransaction();  
  22.  
  23.         // Criteria查詢語句的補充  
  24.         // 一、復合查詢  
  25.         // 在這個一對多的例子中。我們使用復合查詢,查詢所有用戶及其地址。  
  26.         // Criteria criteria = session.createCriteria(User.class);  
  27.         // List list = criteria.list();  
  28.         //  
  29.         // for (int i = 0; i <  list.size(); i++) {  
  30.         // User user = (User) list.get(i);  
  31.         // System.out.println("\t user:"+i+" name is:" + user.getName());  
  32.         //              
  33.         // Set addrSet = user.getAddresses();  
  34.         // Iterator it = addrSet.iterator();  
  35.         // while(it.hasNext()){  
  36.         // Address addr = (Address)it.next();  
  37.         // System.out.println("\t\t user:"+i+" address is:"+addr.getAddress());  
  38.         // }  
  39.         // }  
  40.  
  41.         // 通過Criteria查詢條件,我們可以查詢位于上海的用戶  
  42.         // Criteria criteria = session.createCriteria(User.class);  
  43.         //  
  44.         // Criteria addCriteria =  
  45.         // criteria.createCriteria("addresses");//這里addresses和User類對應  
  46.         // addCriteria.add(Expression.like("address",  
  47.         // "%shanghai%"));//這里構造新的Criteria查詢過濾條件  
  48.         // List list = criteria.list();  
  49.         //  
  50.         // for (int i = 0; i <  list.size(); i++) {  
  51.         // User user = (User) list.get(i);  
  52.         // System.out.println("\t user:" + i + " name is:" + user.getName());  
  53.         //  
  54.         // Set addrSet = user.getAddresses();  
  55.         // Iterator it = addrSet.iterator();  
  56.         // while (it.hasNext()) {  
  57.         // Address addr = (Address) it.next();  
  58.         // System.out.println("\t\t user:" + i + " address is:"  
  59.         // + addr.getAddress());  
  60.         // }  
  61.         // }  
  62.  
  63.         /*  
  64.         * 二、DetachedCriteria的使用 hibernate2 中critria  
  65.         * 生命周期位于宿主Session生命周期之內,session創建criteria實例,Session被銷毀,critria實例也隨之失效  
  66.         * 這很大程度上限制了criteria的重用hibernate3 中提供了DetachedCriteria  
  67.         * 它可以脫離Session實例獨立存在,我們可以把通用的criteria查詢條件進行抽離,更好的實現代碼重用  
  68.         */ 
  69.  
  70.         DetachedCriteria deCriteria = DetachedCriteria.forClass(User.class);  
  71.         deCriteria.add(Expression.eq("name""zhaiyu"));  
  72.         deCriteria.add(Expression.eq("age"new Integer(21)));  
  73.  
  74.         Criteria criteria = deCriteria.getExecutableCriteria(session);// 在其需要的時候與session進行綁定  
  75.         Iterator it = criteria.list().iterator();  
  76.         while (it.hasNext()) {  
  77.             User user = (User) it.next();  
  78.             System.out.println(user.getName());  
  79.         }  
  80.  
  81.         /*  
  82.         * DetachedCriteria 也可以用于子查詢表達 下例返回了年齡超過了平均值的用戶記錄  
  83.         */ 
  84.         DetachedCriteria avgAge = DetachedCriteria.forClass(User.class);  
  85.         avgAge.setProjection(Projections.avg("age"));  
  86.  
  87.         Criteria criteria2 = session.createCriteria(User.class);  
  88.         criteria2.add(Subqueries.propertyGt("age", avgAge));  
  89.  
  90.         List list = criteria2.list();  
  91.         // 我們可以將DetachedCriteria納入查詢表達式 :select ... from User where age > (select  
  92.         // avg(age) from User)  
  93.         // (select avg(age) from User) 由DetachedCriteria avgAge描述  
  94.  
  95.         /* 三、Criteria查詢語句的高級特性 */ 
  96.         // 限定返回記錄范圍  
  97.         Criteria criteria3 = session.createCriteria(User.class);  
  98.         // 限定從第100條開始的20條記錄  
  99.         criteria3.setFirstResult(100);  
  100.         criteria3.setMaxResults(20);  
  101.  
  102.         // 對記錄進行排序  
  103.         Criteria criteria4 = session.createCriteria(User.class);  
  104.         criteria4.add(Expression.eq("id"new Integer(2)));  
  105.         criteria4.addOrder(Order.asc("name"));  
  106.         criteria4.addOrder(Order.desc("id"));  
  107.  
  108.         /* Criteria分組與統計 */ 
  109.         Criteria criteria5 = session.createCriteria(User.class);  
  110.         criteria5.setProjection(Projections.groupProperty("age"));  
  111.  
  112.         Iterator it3 = criteria5.list().iterator();  
  113.         while (it.hasNext()) {  
  114.             System.out.println(it.next());  
  115.         }  
  116.     }  
  117. }  

【編輯推薦】

  1. Hibernate中使用Criteria查詢實例
  2. Hibernate中使用DetchedCriteria
  3. Hibernate之Criteria進階查詢
  4. Hibernate之Criteria基本查詢
  5. Hibernate的事務:事務對象的方法
責任編輯:book05 來源: 百度博客
相關推薦

2021-07-05 09:24:06

MySQL SQL 語句數據庫

2009-06-17 14:17:40

Criteria條件查Hibernate

2009-06-30 16:46:45

Criteria進階查

2009-06-30 16:44:10

Criteria基本查

2010-11-25 14:33:26

MySQL查詢分頁

2009-06-30 16:55:19

2009-11-13 09:24:58

JPA 2.0Criteria AP

2009-06-18 10:07:03

CriteriaHibernate

2009-06-26 16:15:04

Criteria的用法Hibernate

2010-05-27 11:49:37

2009-09-07 17:46:18

LINQ高級特性

2009-09-28 12:57:54

Hibernate C

2018-08-21 09:45:07

數據庫PostgreSQLSQL特性

2010-09-26 15:23:24

SQL語句

2010-11-24 17:36:02

MySQL條件查詢語句

2010-11-18 13:32:12

Oracle分頁查詢

2010-10-21 12:16:11

SQL Server查

2024-10-08 08:00:00

2009-09-24 13:03:38

Hibernate C

2024-03-01 08:51:01

Django查詢表達式查詢語句
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美区在线 | 亚洲国产免费 | 久久国产精品无码网站 | 99爱在线观看 | 亚洲视频www | 久久国产精品一区 | 人人操日日干 | 国产小视频在线 | 亚洲国产成人精品女人 | 男人的天堂亚洲 | 一区二区三区国产好 | 中文字幕精品视频在线观看 | 国产欧美日韩精品一区 | 久久综合一区二区三区 | 中文字幕一区在线观看视频 | 国产午夜精品视频 | 美女黄频 | 午夜影院在线观看免费 | 综合九九| 九九久久精品 | 日韩区| 精品九九九| 给我免费的视频在线观看 | 国产成人精品一区二 | 久久机热 | 毛片网站在线观看 | av网站在线播放 | 少妇一级淫片免费播放 | 一区二区三区国产在线观看 | 亚洲一区二区三区在线观看免费 | 天天欧美 | 久久夜夜| 国产日韩欧美在线 | 国产一区二区不卡 | 国产精品96久久久久久 | 国产成人综合亚洲欧美94在线 | 日韩免费一区二区 | 美女爽到呻吟久久久久 | 国产一极毛片 | 国产成人影院 | 51ⅴ精品国产91久久久久久 |