📜  带有示例的Hibernate Criteria Query Language(HCQL)教程

📅  最后修改于: 2021-01-02 15:51:33             🧑  作者: Mango

HCQL(休眠标准查询语言)

休眠条件查询语言(HCQL)用于根据特定条件获取记录。 Criteria接口提供了应用条件的方法,例如检索工资大于50000的表的所有记录等。

HCQL的优势

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

标准接口

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

会话接口的createCriteria()方法的语法


public Criteria createCriteria(Class c)

Criteria接口的常用方法如下:

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

限制等级

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

  • 公共静态SimpleExpression lt(String propertyName,Object value)小于约束设置为给定属性。
  • 公共静态SimpleExpression le(String propertyName,Object value)小于或等于约束设置为给定属性。
  • 公共静态SimpleExpression gt(String propertyName,Object value)大于约束设置为给定属性。
  • public static SimpleExpression ge(String propertyName,Object value)大于或等于约束设置为给定属性。
  • 公共静态SimpleExpression ne(String propertyName,Object value)不相等的约束设置为给定的属性。
  • 公共静态SimpleExpression eq(String propertyName,Object value)相等约束设置为给定属性。
  • 公共静态Criteriaion between(String propertyName,Object low,Object high)设置之间的约束。
  • 公共静态SimpleExpression like(String propertyName,Object value)like约束设置为给定属性。

订单类别

Order类代表一个订单。限制类的常用方法如下:

  • public static Order asc(String propertyName)根据给定的属性应用升序。
  • 公共静态Order desc(String propertyName)根据给定的属性应用降序。

休眠条件查询语言示例

给出了许多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();