空間站

          北極心空

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          Criteria Query是Hibernate提供的將SQL語句對象化表示的一種方法。當(dāng)我們使用JDBC方式查詢數(shù)據(jù)時會這樣寫: 
          select NAME FROM EMPLOYEE where ID = '001' 

          使用Hibernate的Criteria Query方式查詢時,就可以使用我們已經(jīng)習(xí)慣了的面向?qū)ο蟮姆绞健H缦拢?/font> 

           
          程序代碼 程序代碼
          import net.sf.hibernate.Criteria; 
          import net.sf.hibernate.expression.Expression; 
          ... 

          Criteria criteria = session.createCriteria(Employee.class); 
          criteria.add(Expression.eq("id", "001")); 
          ArrayList list = criteria.list(); 
          ... 


            其中Expression對象是where條件的封裝,提供了查詢限定機(jī)制,現(xiàn)在介紹一下他的具體使用:
           
           Expression的方法描述 
          Expression.eq:對應(yīng)SQL條件中的"field = value"。如:Expression.eq("id","001") 
          Expression.allEq:參數(shù)為一個Map對象,其中包含了多個屬性和值對應(yīng)關(guān)系。相當(dāng)于多個Expression.eq關(guān)系,多個條件。如: 
          程序代碼 程序代碼
          map.put("id", "001"); 
          map.put("name", "hiswing"); 
          Expression.allEq(map); 


          Expression.gt:對應(yīng)SQL條件中的"field > value "。如:Expression.gt("salary", new Integer(5000)) 
          Expression.ge:對應(yīng)SQL條件中的"field >= value"。 
          Expression.lt:對應(yīng)SQL條件中的"field < value"。 
          Expression.le:對應(yīng)SQL條件中的"field <= value"。 
          Expression.between:對應(yīng)SQL條件中的"between"。 
          Expression.like:對應(yīng)SQL條件中的"field like value"。 
          Expression.in:對應(yīng)SQL條件中的"field in …"。 
          Expression.eqProperty:用于比較兩個屬性之間的值,對應(yīng)SQL條件中的"field = field"。如:Expression.eqProperty("Employee.id", "Group.eid"); 
          Expression.gtProperty:用于比較兩個屬性之間的值,對應(yīng)SQL條件中的"field > field"。 
          Expression.geProperty:用于比較兩個屬性之間的值,對應(yīng)SQL條件中的"field >= field"。 
          Expression.ltProperty:用于比較兩個屬性之間的值,對應(yīng)SQL條件中的"field < field"。 
          Expression.leProperty:用于比較兩個屬性之間的值,對應(yīng)SQL條件中的"field <= field"。 
          Expression.and:and關(guān)系組合。
           
          如: 
          Expression.and( 
            Expression.eq("name","hiswing"), 
            Expression.eq("sex", new Integer(1)) 


          Expression.or:or關(guān)系組合。(使用方法同Expression.and) 
          Expression.sql:我們可以通過這個方法直接通過SQL語句限定查詢條件。
           

            注:在使用Criteria時,Expression中的KEY為POJO中的屬性。如Expression.eq("id", "001")中的id為Employee對象中id這個屬性,注意大小寫。
           
           
           
          ****************************************************************************************
           有很多預(yù)制的條件類型(Expression的子類)。有一個特別有用,可以讓你直接嵌入SQL。 

          List cats = sess.createCriteria(Cat.class)
              .add( Expression.sql("lower($alias.name) like lower(?)", "Fritz%", Hibernate.STRING) )
              .list();
          其中的{alias}是一個占位符,它將會被所查詢實體的行別名所替代.

          ************************************************************

           

           
          posted on 2008-06-24 18:21 蘆葦 閱讀(2391) 評論(0)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 长垣县| 深水埗区| 常州市| 梁山县| 泉州市| 武山县| 绥化市| 巴塘县| 旬邑县| 昌图县| 普陀区| 洛阳市| 麻江县| 无锡市| 濉溪县| 通化市| 安乡县| 仪陇县| 阿坝县| 衡阳市| 溧水县| 资溪县| 铜山县| 黄陵县| 南平市| 邯郸县| 乐至县| 顺昌县| 安宁市| 绥中县| 康马县| 丰镇市| 灵川县| 新巴尔虎左旗| 金平| 阿拉善左旗| 桃源县| 遵义县| 车致| 阿荣旗| 晋江市|