Hibernate标准(Criteria)查询语言(HCQL)用于根据具体条件获取记录。Criteria接口提供了应用标准的方法,例如检索薪水大于50000的表的所有记录。

HCQL的优势

HCQL提供了添加条件的方法,因此,java程序员可以很容易添加条件。 java程序员能够在查询中根据需要添加多个条件。

Criteria接口

Criteria接口提供了许多方法来指定条件。 可以通过调用Session接口的createCriteria()方法获得Criteria对象。

session接口的createCriteria()方法的语法

public Criteria createCriteria(Class c)
Java

常用的Criteria接口方法如下:

  1. public Criteria add(Criterion c) 用于添加限制(条件)。
  2. public Criteria addOrder(Order o) 指定排序顺序。
  3. public Criteria setFirstResult(int firstResult) 指定要检索的第一个记录数。
  4. public Criteria setMaxResult(int totalResult) 指定要检索的记录总数。
  5. public List list() 返回包含对象的列表。
  6. public Criteria setProjection(Projection projection) 指定投影。

Restrictions类

Restrictions类提供可用作标准的方法。 常用的Restrictions类方法如下:

  1. public static SimpleExpression lt(String propertyName,Object value) 将给定属性的约束设置为小于约束。
  2. public static SimpleExpression le(String propertyName,Object value) 设置给定属性的小于或等于约束。
  3. public static SimpleExpression gt(String propertyName,Object value) 设置给定属性的大于约束。
  4. public static SimpleExpression ge(String propertyName,Object value) 设置给定属性的大于或等于约束。
  5. public static SimpleExpression ne(String propertyName,Object value) 对给定的属性设置不相于约束。
  6. public static SimpleExpression eq(String propertyName,Object value) 设置约束与给定属性相等。
  7. public static Criterion between(String propertyName, Object low, Object high) 设置约束之间范围。
  8. public static SimpleExpression like(String propertyName, Object value) 将类似的约束设置为给定的属性。

Order类

Order类代表排序顺序。常用的 Restrictions 类方法如下:

  1. public static Order asc(String propertyName) 适用于给定属性的基础上,按升序排列。
  2. public static Order desc(String propertyName) 适用于给定属性的基础上,按降序排列。

Hibernate标准查询语言的示例

下面将给出一些HCQL的例子。

获取所有记录的HCQL示例

Crietria c=session.createCriteria(Emp.class);//passing Class class argument
List list=c.list();
Java

HCQL获得第10到20个记录的例子

Crietria c=session.createCriteria(Emp.class);
c.setFirstResult(10);
c.setMaxResult(20);
List list=c.list();
Java

HCQL获取薪资大于10000的记录示例

Crietria c=session.createCriteria(Emp.class);
c.add(Restrictions.gt("salary",10000));//salary is the propertyname
List list=c.list();
Java

以薪酬(Salary)为基础升序排序记录的HCQL示例

Crietria c=session.createCriteria(Emp.class);
c.addOrder(Order.asc("salary"));
List list=c.list();
Java

HCQL及投影

我们可以通过诸如name等的投影来获取特定列的数据。下面来看一下简单的投影示例,仅打印表的name列的数据。

Criteria c=session.createCriteria(Emp.class);
c.setProjection(Projections.property("name"));
List list=c.list();
Java
 

Hibernate标准查询语言的更多相关文章

  1. Hibernate的查询语言之HQL(一)——快速入门

    Hibernate提供异常强大的查询体系,使用Hibernat有多种查询方式可以选择:即可以使用Hibernate的HQL查询,也可以使用条件查询,甚至可以使用原生的SQL查询语句.不仅如此, Hib ...

  2. Hibernate的查询语言之HQL(二)——Hibernate查询的from字句

    from 是最简单的HQL语句,也是最基本的HQL语句.from 关键字后紧跟持久化类的类名.例如: from Person 表明从Person持久化类中取出全部的实例. 大部分时候,推荐位该Pers ...

  3. [转载][翻译] 利用JSF、SpringFramework和Hibernate构建Web应用的实例讲述

    [原作者] Derek Yang Shen[原文链接] http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.html[源码链接] htt ...

  4. Hibernate 学习教程

    第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个演示样例HibernateHelloWorld 7 第7 ...

  5. Hibernate 马士兵 学习笔记 (转)

    目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...

  6. Hibernate学习大全

    第1课 课程内容. 6 第2课Hibernate UML图. 6 第3课 风格. 7 第4课 资源. 7 第5课 环境准备. 7 第6课 第一个示例HibernateHelloWorld 7 第7课 ...

  7. Hibernate基础知识

    Hibernate Hibernate的作用: 1.         Hibernate解决ORM(对象关系映射)的问题,大大减少了持久层的代码量 2.         hql方言,解决了可移植性问题 ...

  8. Hibernate→ 《Hibernate程序开发》教材大纲

    Hibernate ORM 概览 Hibernate 简介 Hibernate 架构 Hibernate 环境 Hibernate 配置 Hibernate 会话 Hibernate 持久化类 Hib ...

  9. Hibernate框架基本使用

    时间:2017-1-16 00:36 --什么是Hibernate    Hibernate是一个开放源代码的关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以使用对象编程思 ...

随机推荐

  1. javascript数据类型检测方法

    一.字符串.数字.布尔值.undefined的最佳选择市使用 typeof 运算符进行检测: 对于字符串,typeof 返回"string" 对于数字,typeof 返回" ...

  2. Java平时需要注意的事项

    1.String 相等 稍微有点经验的程序员都会用equals比较而不是用 ==,但用equals就真的安全了吗,看下面的代码 user.getName().equals("xiaoming ...

  3. ajax不运行success回调而是运行error回调

    调试代码遇到一个问题,就是前台运行删除操作后,controller返回数据,但前台接收时,ajax不运行success回调,总是弹出失败的对话框.接收数据类型是json. 先看看我的前台代码. if ...

  4. android环境部署(1)

    1.首先是eclipse(现在拿eclipse-standard-kepler-SR1-win32做实验): 下载地址:http://www.eclipse.org/downloads/downloa ...

  5. 【玩转cocos2d-x之三十九】Cocos2d-x 3.0截屏功能集成

    3.0的截屏和2.x的截屏基本上同样.都是利用RenderTexture来处理,在渲染之前调用call函数,然后调用Cocos的场景visit函数对其进行渲染,渲染结束后调用end函数就可以.仅仅是3 ...

  6. 编程算法 - 和为s的两个数字 代码(C)

    和为s的两个数字 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一个递增排序的数组和一个数字s, 在数组中查找两个数, 使得它们的和正好是 ...

  7. 微信小程序 - 滑动显示地点信息(map)

    演示效果如下: 资源如下 marker,png index.wxml <view class="map-container"> <map id="map ...

  8. Linux——.bash_profile和.bashrc的区别(如何设置生效)

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运 ...

  9. c++ 银行管理系统及报告

    1.题目描写叙述: 本代码为银行管理系统,总体分为管理员模式和普通用户模式: (1)在管理员模式中能完毕 ①用户信息录入 ②改动管理员password ③改动指定账户信息 ④信息管理业务 (2)在普通 ...

  10. SkipList的实现

    当做笔记记录下来:) 相比于bTree,skiplist占用更多的空间. 而在并发的环境下skiplist会比bTree效率更高. (bTree插入的时候需要rebalance,需要lock比较多的结 ...