time 
设为首页】【收藏本站

黑白小姐ova下载: 白小姐彩图

当前位置: 白小姐彩图 > JAVA > Hibernate > Hibernate的Criteria用法

Hibernate的Criteria用法

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




在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方法进行分页查询。


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

  • 没能过准丈母娘这关 问题竟出在发际线 2019-05-21
  • 溜溜溜!10位外国驻华大使中文拜年视频合集来啦 2019-05-21
  • “生态+康养” 冰雪康养小镇项目落户沽源 2019-05-14
  • 您要明白的是,如果按照上海市的人口基数2500万计算的话,就算有100万的服务人员,平均每人也要保障25个人的预约服务.人要理性 2019-04-06
  • 回复@海之宁:你的卡点就在于不知道分配既涉及消费资料有涉及生产资料。 2019-04-06
  • 赵雅芝联合“我·爱我 女性健康工程”为乳腺健康共发声 2019-04-03
  • 合肥市庐阳中学启动“教师成长工程” 2019-04-01
  • 中年不发福!51岁景岗山紧身衣秀健硕身材 2019-04-01
  • 炒房炒房,炒了北京炒西安,炒了天堂炒人间,何时休?限价现价叫人害怕。 2019-03-27
  • “5·15”全国公安机关打击和防范经济犯罪宣传日 2019-03-27
  • 穿拖鞋开车酿成追尾事故 2019-03-20
  • 重庆市永川区:“1+8+X”模式探索基层人民调解新路子 2019-03-20
  • 巢湖市第三届少儿器乐比赛圆满落幕 2019-02-15
  • Valentino 2017秋冬高级定制大秀 2018-09-08
  • 中国经济充当了世界经济发展的火车头。但是,作为世界经济火车头的中国,在世界主要经济体股市都走牛的情况下,为何熊途漫漫?这种不正常的现象,背后是我们资本市场的投融 2018-07-14
  • 689| 287| 843| 646| 208| 360| 94| 806| 464| 417|