经常用到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 );
分享到:
相关推荐
hibernate3.0 的 Criteria使用指南 中文文档 是研究hibernate的必要指南
symfony权威指南中文版 内容详细介绍了symfony,以及如何使用。配合官方的课程,可以在短期内学会使用symfony开发php的应用服务,另外附赠一个难得的symfony Model Criteria语句对照表,开发起来更是得心应手。
安全芯片密码检测准则 Cryptography Test Criteria for Security IC
4.6.6 使用条件(criteria)查询 4.7 映射继承 4.8 验证领域(domain)模型 4.8.1 使用域约束(domainonstraints) 4.8.2 验证约束(constraints) 4.8.3 自定义约束(constraints) ...
数字时代的“两个DX”和管理指南 DX标准的目标是什么 日本CTO协会以两种方式使用“ DX”一词。 第一个是公司的数字化转型,它显示了公司正在使用数字技术进行业务转型的程度。 另一种是开发人员体验(Developer ...
age是query criteria,筛选结果,代表查找name字段的值比18大的; name是projection,筛选列(1代表存在, 0代表不存在),代表返回结果中包含name,address,_id(默认包含字段)字段的值; limit是cursor modifier,代表...
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 ...
内容包括css2中文手册、css3中文手册、cssHack参考表、html4参考手册、html5参考手册、jquery1.4参考文档、jqueryAPI参考文档中文版、javascript使用手册、PHP5.3 参考手册、正则表达式系统教程、symfony权威指南、...
Hibernate 开发指南.......................................................................................................3 准备工作 ......................................................................
第 17 章 条件查询(Criteria Queries) 第 18 章 Native SQL 查询 第 19 章 过滤数据 第 20 章 XML 映射 第 21 章 提升性能 第 22 章 工具箱指南 第 23 章 Additional modules 第 24 章 ...
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. 对...
包含BCM5387,BCM5389,BCM5396的硬件设计指南。包括引脚处理方式;pcb设计规则;电源设计等。 The BCM5396 and BCM5389 product families include highly-integrated Gigabit Ethernet (GbE) switch devices ...
15. 条件查询(Criteria Queries); 16. Native SQL查询; 17. 过滤数据; 18. XML映射; 19. 提升性能; 20. 工具箱指南; 21. 示例:父子关系(Parent Child Relationships); 22. 示例:Weblog 应用程序; 23. 示例:复杂...
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. ...
安装指南 四.快速入门 1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的用法介绍 4. 如何进行PLSQL的debug 5. 如何使用SQLab Xpert优化SQL 6. 如何使用SQL Modeler来编写查询 7....
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, 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
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. 配置文件...
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. 配置文件...