天天看點

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

1

今天内容

1 hibernate的查詢方式                                                                                                                                                 

2 對象導航查詢

3 hql查詢

(1)查詢所有

(2)條件查詢

(3)排序查詢

(4)分頁查詢

(5)投影查詢

(6)聚集函數使用

4 qbc查詢

(1)查詢所有

(2)條件查詢

(3)排序查詢

(4)分頁查詢

(5)統計查詢

(6)離線查詢

5 hql多表查詢

(1)mysql多表查詢回顧

(2)hql多表查詢

- 内連接配接、迫切内連接配接、左外連接配接、迫切左外連接配接、右外連接配接

6 hibernate的檢索政策

(1)概念

- hibernate分成:立即和延遲查詢

- 延遲查詢分成:類級别和關聯級别延遲

(2)具體操作

Hibernate查詢方式

1 對象導航查詢

(1)根據id查詢某個客戶,再查詢這個客戶裡面所有的聯系人                                                                                

2 OID查詢

(1)根據id查詢某一條記錄,傳回對象

3 HQL查詢

(1)Query對象,寫hql語句實作查詢

4 QBC查詢

(1)Criteria對象

5 本地sql查詢

(1)SQLQuery對象,使用普通sql實作查詢

對象導航查詢

1 查詢某個客戶裡面所有聯系人過程,使用對象導航實作                                                                                          

2 代碼

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

OID查詢

1 根據id查詢記錄

(1)調用session裡面的get方法實作   

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

HQL查詢

1 hql:hibernate query language,hibernate提供一種查詢語言,hql語言和普通sql很相似,差別:普通sql操作資料庫表和字段,hql操作實體類和屬性

2 常用的hql語句

(1)查詢所有: from實體類名稱

(2)條件查詢: from實體類名稱 where屬性名稱=?

(3)排序查詢: from實體類名稱 order by實體類屬性名稱 asc/desc

3 使用hql查詢操作時候,使用Query對象

(1)建立Query對象,寫hql語句

(2)調用query對象裡面的方法得到結果

查詢所有

1 查詢所有客戶記錄

(1)建立Query對象,寫hql語句

(2)調用query對象裡面的方法得到結果                                                                                                                   

2 查詢所有: from實體類名稱

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

條件查詢

1 hql條件查詢語句寫法:

(1)  from 實體類名稱 where實體類屬性名稱=? and實體類屬性名稱=?                                                             

from  實體類名稱 where實體類屬性名稱 like ?

2 代碼

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
模糊查詢
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

排序查詢

1 hql排序語句寫法

(1)from實體類名稱 order by實體類屬性名稱 asc/desc                                                                                      

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

分頁查詢

1 mysql實作分頁

(1)使用關鍵字 limit實作

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

2 在hql中實作分頁

(1)在hql操作中,在語句裡面不能寫limit,hibernate的Query對象封裝兩個方法實作分頁操作                        

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

投影查詢

1 投影查詢:查詢不是所有字段值,而是部分字段的值

2 投影查詢hql語句寫法:

(1)select實體類屬性名稱1,實體類屬性名稱2  from實體類名稱                                                                         

(2)select後面不能寫 *,不支援的

3 具體實作

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

聚集函數使用

1 常用的聚集函數

(1)count、sum、avg、max、min                                                                                                                         

2 hql聚集函數語句寫法

(1)查詢表記錄數

- select count(*) from實體類名稱

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

QBC查詢

1 使用hql查詢需要寫hql語句實作,但是使用qbc時候,不需要寫語句了,使用方法實作                                      

2 使用qbc時候,操作實體類和屬性

3 使用qbc,使用Criteria對象實作

查詢所有

1 建立Criteria對象

2 調用方法得到結果                                                                                                                                                      

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

條件查詢

1 沒有語句,使用封裝的方法實作                                                                                                                                
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

排序查詢

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

分頁查詢

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
開始位置計算公式:(目前頁-1)*每頁記錄數                                                                                                           

統計查詢

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

離線查詢

1 servlet調用service,service調用dao

(1)在dao裡面對資料庫crud操作

(2)在dao裡面使用hibernate架構,使用hibernate架構時候,調用session裡面的方法實作功能 

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
(3)在後面ssh練習中具體應用

HQL多表查詢

Mysql裡面多表查詢

1 内連接配接
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
2 左外連接配接 
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
3 右外連接配接
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

HQL實作多表查詢

Hql多表查詢

(1)内連接配接

(2)左外連接配接

(3)右外連接配接

(4)迫切内連接配接                  

(5)迫切左外連接配接                                                                                                                                                            

HQL内連接配接

1 内連接配接查詢hql語句寫法:以客戶和聯系人為例

(1)from  Customer  c  inner  join c.setLinkMan

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
傳回list,list裡面每部分是數組形式
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

2 示範迫切内連接配接

(1)迫切内連接配接和内連接配接底層實作一樣的

(2)差別:使用内連接配接傳回list中每部分是數組,迫切内連接配接傳回list每部分是對象                                              

(3)hql語句寫法

- from  Customer  c  inner  join  fetch c.setLinkMan

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

HQL左外連接配接

1 左外連接配接hql語句:

(1)from  Customer  c  left  outer  join c.setLinkMan

(2)迫切左外連接配接from  Customer  c  left  outer  join  fetch c.setLinkMan                                                         

2 左外連接配接傳回list中每部分是數組,迫切左外連接配接傳回list每部分是對象

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

1 右外連接配接hql語句:

(1)from  Customer  c  right  outer  join c.setLinkMan

Hibernate檢索政策

檢索政策的概念

1 hibernate檢索政策分為兩類:

(1)立即查詢:根據id查詢,調用get方法,一調用get方法馬上發送語句查詢資料庫

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
(2)延遲查詢:根據id查詢,還有load方法,調用load方法不會馬上發送語句查詢資料,隻有得到對象裡面的值時候才會發送語句查詢資料庫
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

2 延遲查詢分成兩類:

(1)類級别延遲:根據id查詢傳回實體類對象,調用load方法不會馬上發送語句

(2)關聯級别延遲:

- 查詢某個客戶,再查詢這個客戶的所有聯系人,查詢客戶的所有聯系人的過程是否需要延遲,這個過程稱為關聯級别延遲

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

關聯級别延遲操作

1 在映射檔案中進行配置實作

(1)根據客戶得到所有的聯系人,在客戶映射檔案中配置                                                                                       

2 在set标簽上使用屬性

(1)fetch:值select(預設)

(2)lazy:值

- true:延遲(預設)

- false:不延遲

- extra:極其延遲

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
(1)調用get之後,發送兩條sql語句
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策
(1)極其懶惰,要什麼值給什麼值
帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

批量抓取

1 查詢所有的客戶,傳回list集合,周遊list集合,得到每個客戶,得到每個客戶的所有聯系人                              

(1)上面操作代碼,發送多條sql語句

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策

2 在客戶的映射檔案中,set标簽配置

(1)batch-size值,值越大發送語句越少

帶你逐漸深入了解SSH架構——hibernate查詢操作 Hibernate檢索政策