time 
设为首页】【收藏本站
当前位置: 主页 > JAVA > Hibernate > Hibernate的Criteria用法

Hibernate的Criteria用法

时间:2010-02-02 22:45 点击:2024次 字体:[ ]




在hibernate的Session里面使用createCriteria可以创建一个Criteria实例帮助我们进行条件查询,不用自己串hql语句,很方便。
用法很简单,首先传Class实例创建Criteria,Class实例对应你想要查询的那个实体:
Criteria c = session.createCriteria(Person.class);
然后调用Criteria的add方法加入条件(Restrictions)。常用的条件有:
方法

說明

Restrictions.eq

等於

Restrictions.allEq

使用Map,使用key/value進行多個等於的比對

Restrictions.gt

大於 >

Restrictions.ge

大於等於 >=

Restrictions.lt

小於 <

Restrictions.le

小於等於 <=

Restrictions.between

對應SQL的BETWEEN子句

Restrictions.like

對應SQL的LIKE子句

Restrictions.in

對應SQL的in子句

Restrictions.and

and關係

Restrictions.or

or關係

Restrictions.sqlRestriction

SQL限定查詢

例如,我想返回Person实体里面年龄(age)大于20的记录,那么就为Criteria加入Restrictions.gt条件:
List list = c.add(Restrictions.gt(“age”,new Integer(20))).list();
Restrictions.and和Restrictions.or很有用,表示and查询还是or查询,例如我要查询Person实体里面年龄(age)大于20,或者性别 (sex)为man

的记录,那么就为Criteria加入:
List list = c.add(Restrictions.or(
Restrictions.gt(“age”,new Integer(20)),
Restrictions.eq(“sex”,”man”)
)).list();
如果需要关联查询的话,可以使用Criteria的createCriteria方法创建一个Criteria,例如部门(Department)和人员(Person)是一对多的关系,我要查询Person实体里面年龄(age)大于20,性别 (sex)为man,
备注包含应届生,
且所在部门(department)是开发部的记录:
List list = c.add(Restrictions.gt(“age”,new Integer(20)))
.add(Restrictions.eq(“sex”,”man”))
.add(Restrictions.like(“Memo”,”%应届生%”))
.createCriteria(“department”)
.add(Restrictions.eq(“departmentname”,”开发部”))
.list();
其他条件的用法也很简单,就不列举了。
另外,Hibernate3出了一个org.hibernate.criterion.DetachedCriteria,即离线Criteria,它允许你可以先创建DetachedCriteria,然后传到Session里面才真正返回一个Criteria,用法如下:
// 先建立DetchedCriteria物件
DetachedCriteria detchedCriteria = DetachedCriteria.forClass(Person.class);
// 加入查詢條件
detchedCriteria.add(Restrictions.ge("age",new Integer(25)));
      
Session session = sessionFactory.openSession();
// 綁定Session並返回一個Criteria實例
Criteria criteria = detchedCriteria.getExecutableCriteria(session);
      
List list = criteria.list();

最后,需要注意,Criteria还提供了setFirstResult和setMaxResults方法进行分页查询。


本文地址 : http://www.fengfly.com/plus/view-168800-1.html
标签: Hibernate Criteria
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: