日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate之HQL检索(查询)方式

發布時間:2024/1/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate之HQL检索(查询)方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HQL(Hibernate Query Language)是面向對象的查詢語言,與SQL非常相似。在Hibernate中,HQL是使用最廣泛的檢索方式。

具有下面經常使用功能:

(1)在查詢語句中,能夠設定各種條件

(2)支持檢出對象的部分屬性,就是SQL語句中不用*,而是查詢我們想查詢的對象

(3)支持連接查詢

(4)支持分頁查詢

(5)支持子查詢

(6)支持動態綁定參數

(7)支持分組查詢,能夠用having,group by

(8)提供分組函數(內置聚集函數,sum(),count(),avg(),max(),min(),g)

(9)能夠調用自己定義SQL函數

Session的find()方法和Query接口都支持HQL檢索方式,特別注意,在Hibernate3就取消了find()方法,find()方法不具備動態綁定參數的功能,

檢索與查詢是一個意思,在面向對象中檢索說得多,在sql中查詢說得多。依據習慣去理解即可

Query接口是真正的HQL查詢方式的接口,懂它就夠。

讓我們先看個實例:

package com.lanhuigu.hibernate.test;import java.util.List;import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration;import com.lanhuigu.hibernate.entity.Customer;public class TestHibernateJianSuo {public static void main(String[] args){Configuration cfg = new Configuration().configure();SessionFactory sessionFactory = cfg.buildSessionFactory();Session session = sessionFactory.openSession();Transaction tr = session.beginTransaction();//1.創建Query對象Query query = session.createQuery("from Customer where name=:v_name");//別習慣性的加上select//2.動態綁定參數query.setString("v_name", "test");//3.運行SQL返回查詢結果List list = query.list();//4.輸出結果for (int i=0;i<list.size();i++) {Customer customer = (Customer) list.get(i);System.out.println(customer.getName());}//5.事務提交tr.commit();//6.關閉sessionsession.close();} } 運行結果:

Hibernate: select customer0_.ID as ID1_0_, customer0_.NAME as NAME2_0_, customer0_.EMAIL as EMAIL3_0_, customer0_.PASSWORD as PASSWORD4_0_, customer0_.PHONE as PHONE5_0_, customer0_.ADDRESS as ADDRESS6_0_, customer0_.SEX as SEX7_0_, customer0_.IS_MARRIED as IS8_0_, customer0_.DESCRIPTION as DESCRIPT9_0_, customer0_.IMAGE as IMAGE10_0_, customer0_.BIRTHDAY as BIRTHDA11_0_, customer0_.REGISTERED_TIME as REGISTE12_0_, customer0_.HOME_PROVINCE as HOME13_0_, customer0_.HOME_CITY as HOME14_0_, customer0_.HOME_STREET as HOME15_0_, customer0_.HOME_ZIPCODE as HOME16_0_, customer0_.COMP_PROVINCE as COMP17_0_, customer0_.COMP_CITY as COMP18_0_, customer0_.COMP_STREET as COMP19_0_, customer0_.COMP_ZIPCODE as COMP20_0_ from CUSTOMERS customer0_ where customer0_.NAME=?

test

實例分析Query接口支持的HQL查詢方式的運行步驟:

(1)創建一個Query對象。對象里面包括查詢SQL。SQL中包括命名參數v_name.

(2)動態綁定參數。依據Query接口提供的參數命名方法,設置HQL的參數。比方,query.setString("v_name", "test");

(3)運行查詢語句。返回list集合,集合中存放符合條件的持久化對象。

比如。當調用query.list()時,運行sql,返回customer持久化對象的集合。

(4)支持鏈式變成風格。就是將可連接代碼連接在一起,做到簡潔,明了。比如:

?????? 將上面代碼查詢部分整合例如以下:

List list = session.createQuery("from Customer c where name=:v_name").setString("v_name", "test").list();運行查詢效果一樣。

總結

以上是生活随笔為你收集整理的Hibernate之HQL检索(查询)方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。