Hibernate的Criteria 简单用法

hibernateSession里面使用createCriteria可以创建一个Criteria实例帮助我们进行条件查询,不用自己串hql语句,很方便。

用法很简单,首先传Class实例创建CriteriaClass实例对应你想要查询的那个实体:

Criteria c = session.createCriteria(Person.class);

然后调用Criteriaadd方法加入条件(Restrictions)。常用的条件有:

 

方法

說明

Restrictions.eq

等於

Restrictions.allEq

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

Restrictions.gt

大於 >

Restrictions.ge

大於等於 >=

Restrictions.lt

小於 <

Restrictions.le

小於等於 <=

Restrictions.between

對應SQLBETWEEN子句

Restrictions.like

對應SQLLIKE子句

Restrictions.in

對應SQLin子句

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.andRestrictions.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();

 

 

如果需要关联查询的话,可以使用CriteriacreateCriteria方法创建一个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还提供了setFirstResultsetMaxResults方法进行分页查询。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值