HCQL(Hibernate标准查询语言)

【HCQL(Hibernate标准查询语言)】Hibernate条件查询语言(HCQL)用于根据特定条件获取记录。 Criteria接口提供了应用标准的方法, 例如检索工资大于50000的表的所有记录等。
HCQL的优势
HCQL提供了添加条件的方法, 因此Java程序员很容易添加条件。 Java程序员能够在查询中添加许多条件。
标准接口
Criteria接口提供了许多方法来指定条件。可以通过调用Session接口的createCriteria()方法来获取Criteria的对象。
会话接口的createCriteria()方法的语法

public Criteria createCriteria(Class c)

Criteria接口的常用方法如下:
  1. 公共条件add(Criterion c)用于添加限制。
  2. 公共条件addOrder(Order o)指定排序。
  3. public Criteria setFirstResult(int firstResult)指定要检索的第一个记录数。
  4. 公共条件setMaxResult(int totalResult)指定要检索的记录总数。
  5. public List list()返回包含对象的列表。
  6. 公共条件setProjection(Projection projection)指定投影。
限制等级
限制类提供可用作标准的方法。限制类的常用方法如下:
  1. 公共静态SimpleExpression lt(String propertyName, Object value)将小于约束设置为给定属性。
  2. 公共静态SimpleExpression le(String propertyName, Object value)将小于或等于约束设置为给定属性。
  3. 公共静态SimpleExpression gt(String propertyName, Object value)将大于约束设置为给定属性。
  4. public static SimpleExpression ge(String propertyName, Object value)将大于或等于约束设置为给定属性。
  5. 公共静态SimpleExpression ne(String propertyName, Object value)将不相等的约束设置为给定的属性。
  6. 公共静态SimpleExpression eq(String propertyName, Object value)将相等约束设置为给定属性。
  7. 公共静态Criteriaion between(String propertyName, Object low, Object high)设置之间的约束。
  8. 公共静态SimpleExpression like(String propertyName, Object value)将like约束设置为给定属性。
订单类别
Order类代表一个订单。限制类的常用方法如下:
  1. public static Order asc(String propertyName)根据给定的属性应用升序。
  2. 公共静态Order desc(String propertyName)根据给定的属性应用降序。
Hibernate条件查询语言示例
给出了许多HCQL的示例。
HCQL获取所有记录的示例
Crietria c=session.createCriteria(Emp.class); //passing Class class argument List list=c.list();

HCQL获得第10至20条记录的示例
Crietria c=session.createCriteria(Emp.class); c.setFirstResult(10); c.setMaxResult(20); List list=c.list();

HCQL获取薪水大于10000的记录的示例
Crietria c=session.createCriteria(Emp.class); c.add(Restrictions.gt("salary", 10000)); //salary is the propertyname List list=c.list();

HCQL以薪水为基础以升序获取记录的示例
Crietria 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();

    推荐阅读