Hibernate標準(Criteria)查詢語言(HCQL)用於根據具體條件獲取記錄。Criteria介面提供了應用標準的方法,例如檢索薪水大於50000的表的所有記錄。
HCQL的優勢
HCQL提供了添加條件的方法,因此,java程式員可以很容易添加條件。 java程式員能夠在查詢中根據需要添加多個條件。
Criteria介面
Criteria
介面提供了許多方法來指定條件。 可以通過調用Session介面的createCriteria()
方法獲得Criteria
對象。
session介面的createCriteria()方法的語法
public Criteria createCriteria(Class c)
常用的Criteria
介面方法如下:
public Criteria add(Criterion c)
用於添加限制(條件)。public Criteria addOrder(Order o)
指定排序順序。public Criteria setFirstResult(int firstResult)
指定要檢索的第一個記錄數。public Criteria setMaxResult(int totalResult)
指定要檢索的記錄總數。public List list()
返回包含對象的列表。public Criteria setProjection(Projection projection)
指定投影。
Restrictions類
Restrictions
類提供可用作標準的方法。 常用的Restrictions
類方法如下:
public static SimpleExpression lt(String propertyName,Object value)
將給定屬性的約束設置為小於約束。public static SimpleExpression le(String propertyName,Object value)
設置給定屬性的小於或等於約束。public static SimpleExpression gt(String propertyName,Object value)
設置給定屬性的大於約束。public static SimpleExpression ge(String propertyName,Object value)
設置給定屬性的大於或等於約束。public static SimpleExpression ne(String propertyName,Object value)
對給定的屬性設置不相於約束。public static SimpleExpression eq(String propertyName,Object value)
設置約束與給定屬性相等。public static Criterion between(String propertyName, Object low, Object high)
設置約束之間範圍。public static SimpleExpression like(String propertyName, Object value)
將類似的約束設置為給定的屬性。
Order類
Order
類代表排序順序。常用的 Restrictions
類方法如下:
public static Order asc(String propertyName)
適用於給定屬性的基礎上,按昇冪排列。public static 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();
以薪酬(Salary)為基礎昇冪排序記錄的HCQL示例
Crietria c=session.createCriteria(Emp.class);
c.addOrder(Order.asc("salary"));
List list=c.list();
HCQL及投影
我們可以通過諸如name
等的投影來獲取特定列的數據。下麵來看一下簡單的投影示例,僅列印表的name
列的數據。
Criteria c=session.createCriteria(Emp.class);
c.setProjection(Projections.property("name"));
List list=c.list();
上一篇:
Hibernate查詢語言(HQL)
下一篇:
Hibernate命名查詢