使用HQL須要四步java
獲得Sessionweb
編寫HQL語句數據庫
建立Query對象(Query接口是HQL 查詢接口。它提供了各類的查詢功能)session
執行查詢,獲得結果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,另外,若是要加參數,要加單引號