hibernate 查詢條件 對象expression

關鍵字: hibernate查詢條件封裝對象expression介紹 
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}是一個佔位符,它將會被所查詢實體的行別名所替代. sql

************************************************************ express

相關文章
相關標籤/搜索