Hibernate查詢語言(HQL)
阿新 • • 發佈:2018-12-11
Hibernate查詢語言(HQL)與SQL(結構化查詢語言)相同,但不依賴於資料庫表。 我們在HQL中使用類名,而不是表名。 所以是資料庫獨立的查詢語言。
HQL的優點
- 資料庫獨立
- 支援多型查詢
- 易於Java程式設計師學習
查詢介面
它是一個面向物件的Hibernate Query表示。 Query的物件可以通過Session介面呼叫createQuery()方法。
查詢介面提供了很多方法。下面給出了一些最常用的方法:
- public int executeUpdate() 用於執行更新或刪除查詢。
- public List list() 將關係的結果作為列表返回。
- public Query setFirstResult(int rowno)
- public Query setMaxResult(int rowno) 指定從關係(表)中檢索記錄的行號。
- public Query setParameter(int position, Object value) 它將該值設定為JDBC樣式查詢引數。
- public Query setParameter(String name, Object value) 它將該值設定為命名查詢引數。
HQL獲取所有記錄的示例
Query query = session.createQuery("from Emp");//here persistent class name is Emp List list = query.list();
HQL獲取分頁記錄的示例
Query query = session.createQuery("from Emp");
query.setFirstResult(5);
query.setMaxResult(10);
List list = query.list();//will return the records from 5 to 10th number 返回第5到10條記錄。
HQL更新查詢示例
Transaction tx = session.beginTransaction(); Query q = session.createQuery("update User set name=:n where id=:i"); q.setParameter("n","Udit Kumar"); q.setParameter("i",111); int status = q.executeUpdate(); System.out.println(status) tx.commit();
HQL刪除查詢示例
//specifying class name (Emp) not tablename
Query query = session.createQuery("delete from Emp where id=100");
query.executeUpdate();
HQL與聚合函式
可以通過HQL呼叫avg()
,min()
,max()
等聚合函式。 我們來看一些常見的例子:
獲得所有員工總薪酬的例子
Query q = session.createQuery("select sum(salary) from Emp");
List<Integer> list = q.list();
System.out.println(list.get(0));
獲得員工最高工資的例子
Query q = session.createQuery("select max(salary) from Emp");
獲得員工最低工資的例子
Query q = session.createQuery("select min(salary) from Emp");
計算僱員ID總數的示例
Query q = session.createQuery("select count(id) from Emp");
獲得員工的平均工資的例子
Query q = session.createQuery("select avg(salary) from Emp");