空间站

北极心空

  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 芦苇 阅读(2385) 评论(0)  编辑  收藏 所属分类: Hibernate

只有注册用户登录后才能发表评论。


网站导航: