自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Criteria查詢(xún)語(yǔ)句的補(bǔ)充:高級(jí)特性

開(kāi)發(fā) 后端
本篇文章講述Hibernate中Criteria 查詢(xún)語(yǔ)句的補(bǔ)充。在代碼中提供的一對(duì)多的例子中,作者使用復(fù)合查詢(xún),查詢(xún)所有用戶及其地址。

以下代碼對(duì)Criteria查詢(xún)做了一些補(bǔ)充。代碼內(nèi)部有注釋。

  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查詢(xún)語(yǔ)句的補(bǔ)充  
  24.         // 一、復(fù)合查詢(xún)  
  25.         // 在這個(gè)一對(duì)多的例子中。我們使用復(fù)合查詢(xún),查詢(xún)所有用戶及其地址。  
  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.         // 通過(guò)Criteria查詢(xún)條件,我們可以查詢(xún)位于上海的用戶  
  42.         // Criteria criteria = session.createCriteria(User.class);  
  43.         //  
  44.         // Criteria addCriteria =  
  45.         // criteria.createCriteria("addresses");//這里addresses和User類(lèi)對(duì)應(yīng)  
  46.         // addCriteria.add(Expression.like("address",  
  47.         // "%shanghai%"));//這里構(gòu)造新的Criteria查詢(xún)過(guò)濾條件  
  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生命周期之內(nèi),session創(chuàng)建criteria實(shí)例,Session被銷(xiāo)毀,critria實(shí)例也隨之失效  
  66.         * 這很大程度上限制了criteria的重用hibernate3 中提供了DetachedCriteria  
  67.         * 它可以脫離Session實(shí)例獨(dú)立存在,我們可以把通用的criteria查詢(xún)條件進(jìn)行抽離,更好的實(shí)現(xiàn)代碼重用  
  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);// 在其需要的時(shí)候與session進(jìn)行綁定  
  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 也可以用于子查詢(xún)表達(dá) 下例返回了年齡超過(guò)了平均值的用戶記錄  
  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納入查詢(xún)表達(dá)式 :select ... from User where age > (select  
  92.         // avg(age) from User)  
  93.         // (select avg(age) from User) 由DetachedCriteria avgAge描述  
  94.  
  95.         /* 三、Criteria查詢(xún)語(yǔ)句的高級(jí)特性 */ 
  96.         // 限定返回記錄范圍  
  97.         Criteria criteria3 = session.createCriteria(User.class);  
  98.         // 限定從第100條開(kāi)始的20條記錄  
  99.         criteria3.setFirstResult(100);  
  100.         criteria3.setMaxResults(20);  
  101.  
  102.         // 對(duì)記錄進(jìn)行排序  
  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分組與統(tǒng)計(jì) */ 
  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查詢(xún)實(shí)例
  2. Hibernate中使用DetchedCriteria
  3. Hibernate之Criteria進(jìn)階查詢(xún)
  4. Hibernate之Criteria基本查詢(xún)
  5. Hibernate的事務(wù):事務(wù)對(duì)象的方法
責(zé)任編輯:book05 來(lái)源: 百度博客
相關(guān)推薦

2021-07-05 09:24:06

MySQL SQL 語(yǔ)句數(shù)據(jù)庫(kù)

2009-06-17 14:17:40

Criteria條件查Hibernate

2009-06-30 16:44:10

Criteria基本查

2009-06-30 16:46:45

Criteria進(jìn)階查

2009-06-30 16:55:19

2010-11-25 14:33:26

MySQL查詢(xún)分頁(yè)

2009-11-13 09:24:58

JPA 2.0Criteria AP

2009-06-26 16:15:04

Criteria的用法Hibernate

2009-06-18 10:07:03

CriteriaHibernate

2010-05-27 11:49:37

2009-09-07 17:46:18

LINQ高級(jí)特性

2009-09-28 12:57:54

Hibernate C

2018-08-21 09:45:07

數(shù)據(jù)庫(kù)PostgreSQLSQL特性

2010-10-21 12:16:11

SQL Server查

2010-11-24 17:36:02

MySQL條件查詢(xún)語(yǔ)句

2010-09-26 15:23:24

SQL語(yǔ)句

2010-11-18 13:32:12

Oracle分頁(yè)查詢(xún)

2009-09-24 13:03:38

Hibernate C

2010-11-02 08:58:59

Cassandra

2010-09-28 14:33:13

SQL語(yǔ)句
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)