hibernate hql查詢(需完善)

使用HQL須要四步java

  1. 獲得Sessionweb

  2. 編寫HQL語句數據庫

  3. 建立Query對象(Query接口是HQL 查詢接口。它提供了各類的查詢功能)session

  4. 執行查詢,獲得結果ui

sessionFactory =new Configuration().configure().buildSessionFactory();
session = sessionFactory.openSession();
String hql = 「from test」;
Query query = session.createQuery(hql);
List<Street> list = query.list();

HQL使用:spa

    使用命名參數:Hibernate使用命名參數與JDBC查詢參數?類似,可是Hibernate參數不容易引發混亂。若是使用JDBC查詢參code

數,那麼每當添加、修改或刪除SQL語句的內容時,都必須更新那些設置參數的Java代碼,由於要根據參數在語句中出現的次序識orm

別它們。對象

一個簡單的命名參數參數示例以下:接口

String hql = "from product where price > :price";
Query query = session.createQuery(hql);
query.setDouble("price",25.0);
List results = query.list();

使用hql進行分頁,

Query接口中有兩個用於分頁的方法:setFirstResult()和setMaxResults()。setFirstResult()方法接受一個整數,這個整數表示結果

集中的第一行,編號從0開始。能夠使用setMaxResults()方法讓Hibernate只返回固定數量的對象。

簡單示例以下:

Query query = session.createQuery("from product");
query.setFirstResult(1);
query.setMaxResults(20);
List result = query.list();

獲取惟一的結果:

uniqueResult()方法,能夠使用它從一個HQL查詢中只獲取一個對象。若是要從多個結果集中返回第一個結果,須要使用

setMaxResults()方法,不然會返回NonUniqueResultException異常,若是查詢結果中沒有相應的結果,則返回null

簡單示例以下:

String hql="from product where price > : price";
Query query = session.createQuery(hql);
query.setDouble("price","25.0");
query.setMaxResults(1);
product product = (product) query.uniqueResult();

補充:

HQL的用法是查詢對象,而不是數據庫,好比JAVA bean是User,對應的數據庫爲t_user,此時HQL語句應爲 from User而非from t_user,另外,若是要加參數,要加單引號

相關文章
相關標籤/搜索