`
abeetle
  • 浏览: 98825 次
  • 来自: ...
社区版块
存档分类
最新评论

Criteria使用指南

阅读更多

经常用到Criteria,所以做一下总结

 net.sf.hibernate.Criteria这个接口代表对一个特定的持久化类的查询。Session是用来制造Criteria实例的工厂。

 

Criteria对SQL进行封装,让开发人员可以用物件的方式来对资料库进行操作,例如下面的查询User表格中的所有资料:
Criteria criteria = session.createCriteria(User.class);
// 查询user所有栏位
List users = criteria.list();
Iterator iterator =  users.iterator();
System.out.println("id \t name/age");
while(iterator.hasNext()) {
    User user = (User) iterator.next();
    System.out.println(user.getId() +
                               " \t " + user.getName() +
                               "/" + user.getAge());           
}

Hibernate实际上使用以下的SQL来查询资料库:
select this_.id as id0_, this_.name as name0_0_, this_.age as age0_0_ from user this_

Criteria实际上只是个容器,如果想要设定查询条件,则要使用add()方法加入Restrictions的条件限制,例如查询age大于20且小于40的资料:
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.gt("age", new Integer(20)));
criteria.add(Restrictions.lt("age", new Integer(40)));
List users = criteria.list();

您也可以使用逻辑组合来进行查询,例如结合age等于(eq)20或(or)age为空(isNull)的条件:
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.or(
                   Restrictions.eq("age", new Integer(20)),
                   Restrictions.isNull("age")
               ));
List users = criteria.list();

也可以使用sqlRestriction()方法来提供SQL语法作限定查询,例如查询name以cater开头的资料:
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.sqlRestriction("{alias}.name LIKE (?)", "cater%", Hibernate.STRING));
List users = criteria.list();

其中alias将被替换为与User类别相关的名称,而?将被替换为cater%,也就是第二个参数所提供的值,在SQL撰写时,不必再写WHERE,如果有多个查询条件,例如BETWEEN子句的查询,则可以如下:
Criteria criteria = session.createCriteria(User.class);
Integer[] ages = {new Integer(20), new Integer(40)};
Type[] types = {Hibernate.INTEGER, Hibernate.INTEGER};
criteria.add(Restrictions.sqlRestriction("{alias}.age BETWEEN (?) AND (?)", ages, types));
List users = criteria.list();

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限定查询

Criteria 高级特性

 限定返回的记录范围

 通过criteria. setFirstResult/setMaxResults 方法可以限制一次查询返回的记录范围:

 Criteria criteria = session.createCriteria(User.class);

 //限定查询返回检索结果中,从第一百条结果开始的20条记录

 criteria.setFirstResult(100);

 criteria.setMaxResults(20);

 对查询结果进行排序

 //查询所有groupId=2的记录

 //并分别按照姓名(顺序)groupId(逆序)排序

 Criteria criteria = session.createCriteria(TUser.class);

 criteria.add(Expression.eq("groupId",new Integer(2)));

 criteria.addOrder(Order.asc("name"));

 criteria.addOrder(Order.desc("groupId"));

 

<!----><script type="text/javascript"><!----> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
<!---->
<!----><script type="text/javascript"><!----> </script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><!---->


进行复合查询示例:

 LogicalExpression subcriteria = Expression.or(Expression.ilike("name", searchtxt, MatchMode.ANYWHERE),
          Expression.ilike("description", searchtxt, MatchMode.ANYWHERE));
      criteria.add(subcriteria );

分享到:
评论

相关推荐

    Criteria(hibernate3.0).rar_Criteria java_criteria Hibernate_hibe

    hibernate3.0 的 Criteria使用指南 中文文档 是研究hibernate的必要指南

    symfony权威指南中文版+symfony Model Criteria语句对照表

    symfony权威指南中文版 内容详细介绍了symfony,以及如何使用。配合官方的课程,可以在短期内学会使用symfony开发php的应用服务,另外附赠一个难得的symfony Model Criteria语句对照表,开发起来更是得心应手。

    安全芯片密码检测准则

    安全芯片密码检测准则 Cryptography Test Criteria for Security IC

    Grails权威指南

     4.6.6 使用条件(criteria)查询  4.7 映射继承  4.8 验证领域(domain)模型  4.8.1 使用域约束(domainonstraints)  4.8.2 验证约束(constraints)  4.8.3 自定义约束(constraints) ...

    dxcriteria:DX标准

    数字时代的“两个DX”和管理指南 DX标准的目标是什么 日本CTO协会以两种方式使用“ DX”一词。 第一个是公司的数字化转型,它显示了公司正在使用数字技术进行业务转型的程度。 另一种是开发人员体验(Developer ...

    MongoDB使用指南--基本操作

    age是query criteria,筛选结果,代表查找name字段的值比18大的; name是projection,筛选列(1代表存在, 0代表不存在),代表返回结果中包含name,address,_id(默认包含字段)字段的值; limit是cursor modifier,代表...

    Troubleshooting.with.the.Windows.Sysinternals.Tools.2nd.Edition

    Generate memory dumps when a process meets specified criteria Execute processes remotely, and close files that were opened remotely Manage Active Directory objects and trace LDAP API calls Capture ...

    php开发工程师必备手册

    内容包括css2中文手册、css3中文手册、cssHack参考表、html4参考手册、html5参考手册、jquery1.4参考文档、jqueryAPI参考文档中文版、javascript使用手册、PHP5.3 参考手册、正则表达式系统教程、symfony权威指南、...

    Hibernate开发指南

    Hibernate 开发指南.......................................................................................................3 准备工作 ......................................................................

    Hibernate 3.6.0.Final Reference PDF 手册

    第 17 章 条件查询(Criteria Queries) 第 18 章 Native SQL 查询 第 19 章 过滤数据 第 20 章 XML 映射 第 21 章 提升性能 第 22 章 工具箱指南 第 23 章 Additional modules 第 24 章 ...

    最全Hibernate 参考文档

    20. 工具箱指南 20.1. Schema自动生成(Automatic schema generation) 20.1.1. 对schema定制化(Customizing the schema) 20.1.2. 运行该工具 20.1.3. 属性(Properties) 20.1.4. 使用Ant(Using Ant) 20.1.5. 对...

    538X_5396-AN105-R.pdf

    包含BCM5387,BCM5389,BCM5396的硬件设计指南。包括引脚处理方式;pcb设计规则;电源设计等。 The BCM5396 and BCM5389 product families include highly-integrated Gigabit Ethernet (GbE) switch devices ...

    Hibernate框架参考文档

    15. 条件查询(Criteria Queries); 16. Native SQL查询; 17. 过滤数据; 18. XML映射; 19. 提升性能; 20. 工具箱指南; 21. 示例:父子关系(Parent Child Relationships); 22. 示例:Weblog 应用程序; 23. 示例:复杂...

    解释儿童动态家庭图 (KFD) 的快速评分指南

    WISC scoriug criteria. Palo Alto, CA: Consulting Psychologists Press, 1964. MILLER, C. K., & CHANSKY, N. M. Psychologists’ scoring of WISC protocols. Psychology in the Schools, 1972, 9, 144-152. ...

    Toad 使用快速入门

    安装指南 四.快速入门 1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的用法介绍 4. 如何进行PLSQL的debug 5. 如何使用SQLab Xpert优化SQL 6. 如何使用SQL Modeler来编写查询 7....

    Hibernate3+中文参考文档

    20. 工具箱指南 20.1. Schema自动生成(Automatic schema generation) 20.1.1. 对schema定制化(Customizing the schema) 20.1.2. 运行该工具 20.1.3. 属性(Properties) 20.1.4. 使用Ant(Using Ant) 20.1.5. 对...

    Ownby, RL (1987)。 心理报告:专业心理学报告写作指南。 佛蒙特州布兰登:临床心理学出版社,157 页,[美元]18.95

    Ownby, R. L. (1987). Psychological reports: A guide to report writing in professional ...Perhaps, too, we need to see if criteria based on neurological, Piagetian, or other developmental models mig

    NHibernate参考文档 2.0.0 chm

    17. 工具箱指南 17.1. 数据库结构生成(schema generation) 17.1.1. 对schema定制化(Customizing the schema) 17.1.2. 运行该工具 17.1.3. 配置属性(Properties) 17.1.4. 使用NAnt 17.2. 代码生成 17.2.1. 配置文件...

    NHibernate中文帮组文档(2008.11月更新)

    17. 工具箱指南 17.1. 数据库结构生成(schema generation) 17.1.1. 对schema定制化(Customizing the schema) 17.1.2. 运行该工具 17.1.3. 配置属性(Properties) 17.1.4. 使用NAnt 17.2. 代码生成 17.2.1. 配置文件...

Global site tag (gtag.js) - Google Analytics