鍍金池/ 教程/ Java/ Hibernate標(biāo)準(zhǔn)查詢語(yǔ)言
Hibernate繼承映射
Hibernate每個(gè)子類一張表(使用XML文件)實(shí)例
Hibernate快速入門
Hibernate使用注釋
Hibernate使用xml文件的每個(gè)類層次一張表
Hibernate命名查詢
Hibernate每個(gè)層次類一張表(使用注釋)
Hibernate組件映射
Hibernate事務(wù)管理
Hibernate二級(jí)緩存
集合映射Set(使用xml文件)
Hibernate每個(gè)具體類一張表映射(使用XML)
集合映射中的映射列表(使用xml文件)
Hibernate使用Log4j日志記錄(使用properties文件)
Hibernate集合映射
集合Map映射(使用xml文件)
集合Set映射一對(duì)多(使用xml文件)
Hibernate查詢語(yǔ)言(HQL)
Hibernate入門程序
Hibernate標(biāo)準(zhǔn)查詢語(yǔ)言
Hibernate使用Log4j日志記錄(使用xml文件)
Hibernate教程
Hibernate體系結(jié)構(gòu)
Hibernate生成器類
Hibernate通過many-to-one元素的一對(duì)一映射
集合Map多對(duì)多映射(使用xml文件)
Web應(yīng)用程序使用Hibernate
Hibernate一對(duì)多映射列表實(shí)例(使用xml文件)
Hibernate通過one-to-one元素的一對(duì)一映射
Hibernate每個(gè)子類一張表(使用注釋)實(shí)例
集合映射中的映射包(使用xml文件)
通過Bag一對(duì)多映射示例(使用xml文件)
Hibernate緩存
Hibernate每個(gè)具體類一張表映射(使用注釋)

Hibernate標(biāo)準(zhǔn)查詢語(yǔ)言

Hibernate標(biāo)準(zhǔn)(Criteria)查詢語(yǔ)言(HCQL)用于根據(jù)具體條件獲取記錄。Criteria接口提供了應(yīng)用標(biāo)準(zhǔn)的方法,例如檢索薪水大于50000的表的所有記錄。

HCQL的優(yōu)勢(shì)

HCQL提供了添加條件的方法,因此,java程序員可以很容易添加條件。 java程序員能夠在查詢中根據(jù)需要添加多個(gè)條件。

Criteria接口

Criteria接口提供了許多方法來(lái)指定條件。 可以通過調(diào)用Session接口的createCriteria()方法獲得Criteria對(duì)象。

session接口的createCriteria()方法的語(yǔ)法

public Criteria createCriteria(Class c)

常用的Criteria接口方法如下:

  1. public Criteria add(Criterion c) 用于添加限制(條件)。
  2. public Criteria addOrder(Order o) 指定排序順序。
  3. public Criteria setFirstResult(int firstResult) 指定要檢索的第一個(gè)記錄數(shù)。
  4. public Criteria setMaxResult(int totalResult) 指定要檢索的記錄總數(shù)。
  5. public List list() 返回包含對(duì)象的列表。
  6. public Criteria setProjection(Projection projection) 指定投影。

Restrictions類

Restrictions類提供可用作標(biāo)準(zhǔn)的方法。 常用的Restrictions類方法如下:

  1. public static SimpleExpression lt(String propertyName,Object value) 將給定屬性的約束設(shè)置為小于約束。
  2. public static SimpleExpression le(String propertyName,Object value) 設(shè)置給定屬性的小于或等于約束。
  3. public static SimpleExpression gt(String propertyName,Object value) 設(shè)置給定屬性的大于約束。
  4. public static SimpleExpression ge(String propertyName,Object value) 設(shè)置給定屬性的大于或等于約束。
  5. public static SimpleExpression ne(String propertyName,Object value) 對(duì)給定的屬性設(shè)置不相于約束。
  6. public static SimpleExpression eq(String propertyName,Object value) 設(shè)置約束與給定屬性相等。
  7. public static Criterion between(String propertyName, Object low, Object high) 設(shè)置約束之間范圍。
  8. public static SimpleExpression like(String propertyName, Object value) 將類似的約束設(shè)置為給定的屬性。

Order類

Order類代表排序順序。常用的 Restrictions 類方法如下:

  1. public static Order asc(String propertyName) 適用于給定屬性的基礎(chǔ)上,按升序排列。
  2. public static Order desc(String propertyName) 適用于給定屬性的基礎(chǔ)上,按降序排列。

Hibernate標(biāo)準(zhǔn)查詢語(yǔ)言的示例

下面將給出一些HCQL的例子。

獲取所有記錄的HCQL示例

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

HCQL獲得第10到20個(gè)記錄的例子

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();

以薪酬(Salary)為基礎(chǔ)升序排序記錄的HCQL示例

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

HCQL及投影

我們可以通過諸如name等的投影來(lái)獲取特定列的數(shù)據(jù)。下面來(lái)看一下簡(jiǎn)單的投影示例,僅打印表的name列的數(shù)據(jù)。

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