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

 

Hibernate的Criteria用法的更多相关文章

  1. Hibernate之Criteria的完整用法

    Criteria的完整用法 QBE (Query By Example) Criteria cri = session.createCriteria(Student.class); cri.add(E ...

  2. 转:Hibernate中Criteria和DetachedCriteria的完整用法

    原文地址:http://blog.sina.com.cn/s/blog_667528fd0100rkrf.html 设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 H ...

  3. Hibernate中Criteria的完整用法2

    Criteria的完整用法 QBE (Query By Example) Criteria cri = session.createCriteria(Student.class); cri.add(E ...

  4. Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o

    Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o 1. Criteria,,Criterion ,, 1 <2. 主要的对象黑头配置磊 ...

  5. 1-4 criteria用法大全

    Criteria的完整用法 QBE (Query By Example) Criteria cri = session.createCriteria(Student.class); cri.add(E ...

  6. Atitit.Hibernate于Criteria 使用汇总and 关系查询 and 按照子对象查询 o9o

    Atitit.Hibernate于Criteria 使用总结and 关联查询 and 依照子对象查询 o9o 1. Criteria,,Criterion ,, 1 <2. 基本的对象黑头配置磊 ...

  7. Hibernate 中Criteria Query查询详解【转】

    当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中.此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询 ...

  8. 5 -- Hibernate的基本用法 -- 要点

    Hibernate的基本用法 ⊙ ORM的基本知识 ⊙ ORM和Hibernate的关系 ⊙ Hibernate的基本映射思想 ⊙ Hibernate入门知识 ⊙ 使用Eclipse开发Hiberna ...

  9. 分享知识-快乐自己:Hibernate 中Criteria Query查询详解

    1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Cr ...

随机推荐

  1. Javascript-数据类型、类型转换

    typeof 判断数据类型: var n = 1; var t = "echo"; var fn = function() {} var arr = [1,2,3]; typeof ...

  2. 初学swift笔记 结构体(八)

    import Foundation /* 和类很相似 结构体 -> 封装 属性.方法 结构体是值类型 */ //定义一个LSQ类型的结构体 关键字struct struct LSQ { var ...

  3. 1207: C.LU的困惑

    题目描述 Master LU 非常喜欢数学,现在有个问题:在二维空间上一共有n个点,LU每连接两个点,就会确定一条直线,对应有一个斜率.现在LU把平面内所有点中任意两点连线,得到的斜率放入一个集合中( ...

  4. 【原创】QT5-卸载精灵v1.0-卸载windows软件-简易版

    由于项目需求,需要实现卸载windows上的普通软件的小功能,实现起来还是比较简单的. 先发个图: 思路: 1.根据注册表的信息去打开应用程序,卸载也一样: 2.读桌面的快捷方式,根据快捷方式的指向路 ...

  5. UIDatePicker控件

    UIDatePicker继承关系如下: UIDatePicker-->UIControl-->UIView-->UIResponder-->NSObject 1.创建UIDat ...

  6. Eclipse Useful Plugins Links

    1.maven for eclipse http://m2eclipse.sonatype.org/sites/m2e 2. svn1.6  for ecipse http://subclipse.t ...

  7. delphi 修改代码补全的快捷键(由Ctrl+Space 改为 Ctrl + alt + Space)(通过修改OpenTool生效)

    delphi 的IDE快捷键与输入法切换键中突,以往的解决方法是下载一个ImeTool修改 windows 系统的快捷键 在 xp win7 都好使,但在win 10经常是修改完后,重启又失效了. 本 ...

  8. Linux常用C函数---字符测试篇

    函数讲解部分参考http://net.pku.edu.cn/~yhf/linux_c/ isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isdigit,islower,isupp ...

  9. Introduction to Big Data with Apache Spark 课程总结

    课程主要实用内容: 1.spark实验环境的搭建 2.4个lab的内容 3.常用函数 4.变量共享   1.spark实验环境的搭建(windows)   a. 下载,安装visualbox 管理员身 ...

  10. ios控制器modal跳转

    1. http://www.cnblogs.com/smileEvday/archive/2012/05/29/presentModalViewController.html 2012年5月- Pre ...