Hibernate Criteria Query Language (HCQL) 用于基于特定标准获取记录。Criteria接口提供了应用各种条件的方法,例如检索所有工资大于50000的记录。

HCQL的优势

HCQL提供了添加条件的方法,因此Java程序员可以很容易地在查询中添加条件。Java程序员能够在一个查询中添加许多条件。

Criteria接口

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

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

public Criteria createCriteria(Class c)  

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类提供可用作Criterion的方法。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) 设置给定属性的 like 约束。

Order类

Order类表示一个排序。Order类常用的方法如下:

  1. public static Order asc(String propertyName) 基于给定属性应用升序排序。
  2. public static Order desc(String propertyName) 基于给定属性应用降序排序。

Hibernate Criteria Query Language示例

以下是一些HCQL的示例。

获取所有记录的HCQL示例

Criteria c = session.createCriteria(Emp.class); // 传递Class类参数
List list = c.list();

获取第10到第20条记录的HCQL示例

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

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

Criteria c = session.createCriteria(Emp.class);
c.add(Restrictions.gt("salary", 10000)); // salary是属性名
List list = c.list();

基于工资升序获取记录的HCQL示例

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

带投影的HCQL

我们可以通过投影来获取特定列的数据,比如姓名。以下是一个仅打印表中NAME列数据的简单示例。

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

这些示例展示了如何使用Hibernate Criteria Query Language来构建和执行基于特定条件的查询。HCQL的面向对象方法使得查询更容易理解和管理。

标签: Hibernate, Hibernate教程, Hibernate框架, Hibernate框架设计, Hibernate初级教程, Hibernate框架用法, Hibernate指南, Hibernate入门, Hibernate中级教程, Hibernate进阶教程, Hibernate高级教程, Hibernate下载