`
sunxboy
  • 浏览: 2832653 次
  • 性别: Icon_minigender_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.like

 

对应 SQL 中的 “field like value” 表达式

 

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

 

 

分享到:
评论

相关推荐

    Hibernate开发指南

    Criteria 查询表达式 ................................................................ 33 Criteria 高级特性 .................................................................... 35 限定返回的记录范围......

    php开发工程师必备手册

    一个web开发工程师必备的查询手册,内容包括css2中文手册、css3中文手册、cssHack参考表、html4参考手册、html5参考手册、jquery1.4参考文档、jqueryAPI参考文档中文版、javascript使用手册、PHP5.3 参考手册、正则...

    [详细完整版]计算机函数.doc

    1、IF函数 函数名称:IF 主要功能:根据对指定条件的逻辑判断的真假结果,返回相对应的内容。 使用格式:=IF(Logical,Value_if_true,Value_if_...Criteria表示指定的条件表达式。 应用举例:在C17单元格中输入公式:

    java从入门到精通70个PPT

    46 Criteria 查询 47-49 项目实战 影院信息查询系统 50 pl/sql 51 Oracle数据库对象 52 提高数据库性能 53 hibernate总结 54 使用Spring容器管理JavaBean 55 Spring 数据访问支持 56-59 项目实战:JBOA办公自动化...

    matlab:单目标测试集CEC2005代码

    CEC2005是单目标测试集中比较常见的使用测试集,该资源经过测试,完全满足函数的表达式,各项数据文件都提供完整。CEC2005的文章链接如下:...

    MySQL命令大全

     此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序:  mysql&gt; exit  Bye9! 1:使用SHOW语句找出在服务器上当前存在什么...

    MYSQL常用命令大全

     此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序:  mysql&gt; exit  Bye9! 1:使用SHOW语句找出在服务器上当前存在什么...

    简单了解Python中的几种函数

    几个特殊的函数(待补充) ...冒号后面是表达式,表达式计算结果就是本函数的返回值 冒号后面是表达式,表达式计算结果就是本函数的返回值 比如,要打印一个list,里面依次是某个数字的1次方,二次

    NHibernate参考文档 2.0.0 chm

    9.3.4. 条件查询(Criteria queries) 9.3.5. 使用原生SQL的查询 9.4. 修改持久化对象 9.4.1. 使用同一个ISession持久化对象 9.4.2. 修改脱管(Detached)对象 9.4.3. 重新附脱管(Detached)对像 9.5. 删除持久化对象 9.6...

    hibernate 框架详解

    16. 条件查询(Criteria Queries) 16.1. 创建一个Criteria 实例 16.2. 限制结果集内容 16.3. 结果集排序 16.4. 关联 16.5. 动态关联抓取 16.6. 查询示例 16.7. 投影(Projections)、聚合(aggregation)和分组...

    Hibernate参考文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    最全Hibernate 参考文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

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

    9.3.4. 条件查询(Criteria queries) 9.3.5. 使用原生SQL的查询 9.4. 修改持久化对象 9.4.1. 使用同一个ISession持久化对象 9.4.2. 修改脱管(Detached)对象 9.4.3. 重新附脱管(Detached)对像 9.5. 删除持久化对象 9.6...

    Hibernate3+中文参考文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    Hibernate中文详细学习文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...

    Hibernate 中文 html 帮助文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    hibernate3.04中文文档.chm

    11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. ...

    Hibernate教程

    11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session...

    hibernate 体系结构与配置 参考文档(html)

    15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. 查询示例 15.7. 投影(Projections)、聚合(aggregation)和分组...

Global site tag (gtag.js) - Google Analytics