空間站

          北極心空

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

          使用Hibernate的Criteria Query方式查詢時,就可以使用我們已經習慣了的面向對象的方式。如下:
           

           
          程序代碼 程序代碼
          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條件的封裝,提供了查詢限定機制,現在介紹一下他的具體使用:
           
           Expression的方法描述 
          Expression.eq:對應SQL條件中的"field = value"。如:Expression.eq("id","001") 
          Expression.allEq:參數為一個Map對象,其中包含了多個屬性和值對應關系。相當于多個Expression.eq關系,多個條件。如: 
          程序代碼 程序代碼
          map.put("id", "001"); 
          map.put("name", "hiswing"); 
          Expression.allEq(map); 


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


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

            注:在使用Criteria時,Expression中的KEY為POJO中的屬性。如Expression.eq("id", "001")中的id為Employee對象中id這個屬性,注意大小寫
           
           
           
          ****************************************************************************************
           有很多預制的條件類型(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
          主站蜘蛛池模板: 耒阳市| 密山市| 鹿邑县| 高台县| 扎赉特旗| 安庆市| 新乐市| 化隆| 库伦旗| 武隆县| 邹平县| 通河县| 丁青县| 三河市| 定远县| 兴业县| 镇雄县| 刚察县| 兰坪| 勃利县| 阳信县| 民县| 永康市| 新巴尔虎右旗| 肥乡县| 乌审旗| 广灵县| 洛扎县| 东平县| 垣曲县| 察雅县| 东至县| 治多县| 同德县| 宿松县| 潮安县| 蛟河市| 建始县| 曲沃县| 涡阳县| 兴业县|