<转自 lqw8668>
criteria用法
Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:
Criteria criteria = session.createCriteria(User.class);
criteria.add(Expression.eq("name","Erica"));
criteria.add(Expression.eq("sex",new Integer(1)));
Criteria 查询表达式
Criteria 本身只是一个查询容器,具体的查询条件需要通过Criteria.add方法添加到Criteria实例中。 如前例所示,Expression 对象具体描述了查询条件。针对SQL 语法,Expression提供了对应的查询限定机制,包括:
方法 描述
Expression.eq 对应SQL“field = value”表达式。 如Expression.eq("name","Erica")
Expression.allEq 参数为一个Map对象,其中包含了多个属性-值对应关系。相当于多个Expression.eq关系的叠加。
Expression.gt 对应SQL中的 “field > value ” 表达式
Expression.ge 对应SQL中的 “field >= value” 表达式
Expression.lt 对应SQL中的 “field < value” 表达式
Expression.le 对应SQL中的 “field <= value” 表达式
Expression.between 对应SQL中的 “between” 表达式
如下面的表达式表示年龄(age)位于13到50区间内。
Expression.between("age",new
Integer(13),new Integer(50));
表达式
Expression.in 对应SQL中的 ”field in …” 表达式
Expression.eqProperty 用于比较两个属性之间的值,对应SQL中的“field = field”。 如:
Expression.eqProperty( "TUser.groupID", "TGroup.id" );
Expression.gtProperty 用于比较两个属性之间的值,对应SQL中的“field > field”。
Expression.geProperty 用于比较两个属性之间的值,对应SQL中的“field >= field”。
Expression.ltProperty 用于比较两个属性之间的值,对应SQL中的“field < field”。
Expression.leProperty 用于比较两个属性之间的值,对应SQL中的“field <= field”。
Expression.and and关系组合。 如:
Expression.and( Expression.eq("name","Erica"), Expression.eq( "sex", new Integer(1) ) );
Expression.or or关系组合。 如:
Expression.or( Expression.eq("name","Erica"), Expression.eq("name","Emma") );
Expression.sql 作为补充,本方法提供了原生SQL语法的支持。我们可以通过这个方法直接通过SQL语句限定查询条件。 下面的代码返回所有名称以“Erica”起始的记录:
Expression.sql( “lower({alias}.name) like lower(?)”, "Erica%", Hibernate.STRING );
其中的“{alias}”将由Hibernate在运行期使用当前关联的POJO别名替换。 注意Expression 各方法中的属性名参数(如Express.eq中的第一个参数),这里 所谓属性名是POJO中对应实际库表字段的属性名(大小写敏感),而非库表中的实际字段名称。
Criteria 高级特性
限定返回的记录范围
通过criteria. setFirstResult/setMaxResults 方法可以限制一次查询返回的记录范围:
Criteria criteria = session.createCriteria(TUser.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"));
Criteria作为一种对象化的查询封装模式,不过由于Hibernate在实现过程中将精力 更加集中在HQL查询语言上,因此Criteria的功能实现还没做到尽善尽美(这点上,OJB 的Criteria 实现倒是值得借鉴),因此,在实际开发中,建议还是采用Hibernate 官
方推荐的查询封装模式:HQL
分享到:
相关推荐
**A:** 可通过定义具体的测试案例、使用案例以及评估方法来确保声明的安全功能可以被验证。 - **Q:** 在开发过程中如何维护安全目标的一致性? **A:** 通过定期审查和更新安全目标文档,并确保所有团队成员都对...
9. **关联映射**:涵盖不同类型的关联(如单向、双向、自关联)的配置和使用方法。 10. **事件和拦截器**:介绍如何利用Hibernate的事件监听机制和拦截器实现自定义的行为,如对象的生命周期管理。 11. **性能优化...
《Hibernate 3.2 帮助文档》是针对Java开发者的重要参考资料,它详细阐述了Hibernate 3.2版本的框架特性和使用方法。Hibernate是一个开源的Java对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互,通过...
6. Criteria查询:提供一种动态构建查询的方法,无需编写HQL,支持更灵活的查询构建。 7. Criteria API和DetachedCriteria:进一步讲解Criteria API,包括如何创建、组合查询条件,以及DetachedCriteria的使用,...
Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在Java应用程序中管理和持久化数据到关系数据库的方法。ORM框架能够将复杂的SQL操作和数据库交互转化为简单的对象操作,极大地提高了开发...
3. Session和SessionFactory的使用方法 4. CRUD操作示例 5. Criteria查询和HQL查询的实践 6. 事务处理与并发控制 7. 缓存机制的介绍 8. Hibernate性能优化技巧 9. 实际项目案例分析 通过这份读书笔记,读者将能全面...
- 使用忆阻器作为神经形态电子系统中的突触连接已提出不同的神经架构。 - 忆阻神经形态系统的主障碍之一是潜行路径现象,这导致了系统出现各种有趣的非线性特性。 - 最近,对某些类型的忆阻神经动力学系统的全局...
本参考指南将深入探讨Hibernate的核心概念、配置、使用方法以及最佳实践。 一、Hibernate概览 Hibernate 提供了一个持久层框架,将Java对象映射到关系数据库中的表。这种映射通过XML配置文件或注解来定义,使得...
### 谷歌地图应用开发知识点详解 ...此案例不仅涵盖了Google Maps API的基本使用方法,还涉及到了Android SDK中的一些关键组件和技术点,对于想要深入学习Android地图开发的开发者来说具有一定的参考价值。
#### ISO 14971:2007标准内容概览 ISO 14971:2007标准主要包括以下几个部分: 1. **前言**:介绍标准的背景、目的以及与其他标准的关系。 2. **引言**:概述风险管理的重要性及其在医疗设备设计与开发过程中的作用...
《Hibernate5用户手册中文版》是为Java开发者提供的一份详尽指南,它涵盖了Hibernate框架的最新版本——Hibernate 5的核心特性和使用方法。Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发人员使用面向...
一、Hibernate概览 Hibernate是一个开源的ORM框架,它为Java应用程序提供了将数据库操作转化为面向对象的API,极大地简化了数据库编程。3.6版本是其成熟期的一个稳定版本,引入了许多性能优化和新特性。 二、...
以上只是《Hibernate中文参考手册》的部分内容概览,具体手册中还包含了更多关于实体状态管理、性能优化、类型转换、CGLIB和JPA支持等深入细节。通过详细阅读和实践,开发者可以全面掌握Hibernate的使用,提升Java...
本指南将带你深入了解Hibernate的核心概念、配置与使用方法,帮助你快速掌握这一强大的工具。 一、Hibernate概览 Hibernate 是Java开发中的一个持久层框架,它实现了对象和关系数据库之间的桥梁,使得开发者可以...
7. Native SQL:尽管HQL是主要的查询方式,但Hibernate也支持直接执行SQL语句,包括使用`Session.createSQLQuery()`方法和映射结果到Java对象。 8. 第二级缓存:为了提高性能,Hibernate支持第二级缓存,它可以缓存...
本文将根据提供的“Hibernate pdf学习文档”,深入探讨Hibernate的核心概念、配置与使用方法,以及它在实际项目中的应用。 1. Hibernate概览 Hibernate最初由Gavin King创建,如今已成为Java社区中不可或缺的一...
1. 插入:使用save()或saveOrUpdate()方法将对象持久化到数据库。 2. 更新:update()方法用于更新已存在的对象。 3. 删除:delete()方法移除数据库中的记录。 4. 加载和检索:get()和load()用于按ID获取对象,而find...