【HCQL(Hibernate标准查询语言)】Hibernate条件查询语言(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()返回包含对象的列表。
- 公共条件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();
推荐阅读
- Hibernate和Spring集成
- Hibernate组件映射
- Hibernate中的集合映射
- Hibernate中的缓存
- Hibernate双向关联
- 带有Hibernate的Web应用程序(使用XML)
- 使用xml文件的每个具体类的表
- 第一个没有IDE的Hibernate示例
- Android开发学习--RecycleView入门