`
pavel
  • 浏览: 928295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

criteria用法

阅读更多

Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:


Java代码  
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提供了对应的查询限定机制,包括:


Java代码


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区间内。


Java代码
Expression.between("age",new Integer(13),new Integer(50));

表达式


Java代码


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”起始的记录:


Java代码
Expression.sql( “lower({alias}.name) like lower(?)”, "Erica%", Hibernate.STRING );  
Expression.sql( “lower({alias}.name) like lower(?)”, "Erica%", Hibernate.STRING );

其中的“{alias}”将由Hibernate在运行期使用当前关联的POJO别名替换。 注意Expression 各方法中的属性名参数(如Express.eq中的第一个参数),这里 所谓属性名是POJO中对应实际库表字段的属性名(大小写敏感),而非库表中的实际字段名称。

Criteria 高级特性

限定返回的记录范围

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


Java代码
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 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"));

 


更详细的的内容
http://docs.huihoo.com/hibernate/reference-v3_zh-cn/querycriteria.html

 

 

分享到:
评论
2 楼 senhui19 2010-11-12  
嗯,写的不错,收藏起来方便以后查看,呵呵~~
1 楼 hanz188 2010-07-30  
楼主总结的真好,我看完之后基本上就了解了criteria的概念和用法了。如果页面能够重新排下版就更好了,另外,最后一段代码重复了,能不能删除一个。

相关推荐

    Hibernate的Criteria用法总结.doc

    使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。Criteria crit = session.createCriteria(User.class); crit.add(Restrictions.eq("name", "John")); List...

    Criteria使用方法

    ### Criteria使用方法详解 #### 一、概述 在软件开发过程中,尤其是涉及到数据库操作的应用程序中,查询语言的灵活性和效率对于项目的成功至关重要。Hibernate作为Java领域中最流行的ORM(Object Relational ...

    Hibernate的Criteria用法

    以下是对Criteria用法的详细说明: 1. **创建Criteria实例**: 要开始使用Criteria,你需要在Hibernate的Session中调用`createCriteria()`方法,传入你想查询的实体类的Class对象。例如,如果你要查询Person实体,...

    Hibernate Criteria用法大全.docx

    【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...

    Hibernate的Criteria用法总结

    在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...

    DetachedCriteria Criteria 使用方法

    - **使用场景**:`Criteria` 适用于即时查询,而 `DetachedCriteria` 更适合跨层传递查询条件。 - **灵活性**:`DetachedCriteria` 提供了更大的灵活性,可以在不同层之间传递而不会丢失查询状态。 #### 三、`...

    Criteria用法

    - 使用`Session`对象的`createCriteria()`方法创建Criteria实例,例如:`Criteria crt = session.createCriteria(Organization.class);` 2. **添加查询条件**: - `Restrictions`类提供了多种方法来构建条件,如`...

    关联映射hibernate的criteria的用法

    **关联映射Hibernate的Criteria用法详解** 在Java开发中,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。其中,Criteria API是Hibernate提供的一个动态查询工具,它允许开发者以面向...

    hibernate criteria的使用方法

    ### Hibernate Criteria 使用方法详解 #### 一、简介 Hibernate 是一款非常流行的 Java 持久层框架,它简化了对象关系映射(ORM)过程中的许多复杂性。在 Hibernate 中,Criteria API 提供了一种类型安全的方式来...

    Criteria用法详解

    - `Session`对象:在Hibernate中,`Session`是与数据库交互的主要接口,它提供了`createCriteria()`方法来创建一个`Criteria`实例。 - `Criteria`对象:这是构建查询的核心,通过调用其各种方法来指定查询条件、...

    Hibernate中Criteria的完整用法

    以下是一些使用Criteria API的基本用法: 1. 创建Criteria实例: ```java Criteria criteria = session.createCriteria(User.class); ``` 2. 添加查询条件: ```java criteria.add(Restrictions.eq("username...

    Hibernate中Criteria的用法

    在上面的代码中,我们首先创建了一个 Criteria 对象,然后使用 `Restrictions.like()` 方法创建了一个条件对象,最后使用 `add()` 方法将条件添加到 Criteria 对象中,并使用 `list()` 方法来获取查询结果。...

    Hibernate中Criteria的完整用法.docx

    本文将对 Hibernate 中 Criteria 的用法进行总结,涵盖 Criteria 和 DetachedCriteria 的差异、Criterion 和 Projection 的使用方法等。 Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供...

    Criteria的完整用法.pdf

    通过理解并熟练掌握`Criteria`、`DetachedCriteria`、`Criterion`和`Projection`等核心概念及其使用方法,可以显著提升数据库操作的效率和代码的可维护性。在实际项目中,结合Spring框架的便利性,开发者能够更加...

    criteria介绍与使用

    本文将详细介绍`Criteria`的基本概念、使用方法以及其提供的各种功能特性。 #### Criteria简介 `Criteria`是Hibernate框架提供的一个接口,用于创建面向对象的查询。它允许开发者以程序化的方式构建查询条件,从而...

    Criteria标准化对象查询小例子

    下面将详细解释Criteria API的核心概念和用法。 Criteria API的主要优势在于它允许程序在运行时构造查询,这意味着可以在不硬编码SQL的情况下,根据业务逻辑的变化灵活地调整查询条件。这对于维护和扩展应用程序...

    Hibernate中Criteria的使用

    使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。Criteria 和 DetachedCriteria 都可以使用Criterion 和 Projection 设置查询条件,可以设置 FetchMode...

Global site tag (gtag.js) - Google Analytics