Hibernate查詢方式

來源:互聯網
上載者:User

標籤:lazy   內串連   操作   outer   add   本地   ext   als   .com   

Hibernate查詢方式

1 對象導航查詢

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

 

2 OID查詢

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

 

3 HQL查詢

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

 

4 QBC查詢

(1)Criteria對象

 

5 本地sql查詢

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

對象導航查詢

1 查詢某個客戶裡面所有連絡人過程,使用對象導航實現

 

2 代碼

 

 

 

OID查詢

1 根據id查詢記錄

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

 

 

 

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 實體類名稱

 

 

 

 

條件查詢

1 hql條件查詢語句寫法:

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

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

 

2 代碼

 

模糊查詢

 

 

排序查詢

1 hql排序語句寫法

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

 

 

 

分頁查詢

1 mysql實現分頁

(1)使用關鍵字 limit實現

 

2 在hql中實現分頁

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

 

 

投影查詢

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

 

2 投影查詢hql語句寫法:

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

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

 

3 具體實現

 

 

聚集合函式使用

1 常用的聚集合函式

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

 

2 hql聚集合函式語句寫法

(1)查詢表記錄數

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

 

 

QBC查詢

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

 

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

 

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

 

 

 

查詢所有

1 建立Criteria對象

2 調用方法得到結果

 

 

條件查詢

1 沒有語句,使用封裝的方法實現

 

 

 

 

 

排序查詢

 

 

 

分頁查詢

 

 開始位置計算公式: (當前頁-1)*每頁記錄數

 

統計查詢
 

 

離線查詢

1 servlet調用service,service調用dao

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

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

 

 

(3)在後面ssh練習中具體應用

 

HQL多表查詢Mysql裡面多表查詢

 


HQL實現多表查詢 

Hql多表查詢

(1)內串連

(2)左外串連

(3)右外串連

(4)迫切內串連

(5)迫切左外串連

HQL內串連

1 內串連查詢hql語句寫法:以客戶和連絡人為例

(1)from  Customer  c  inner  join  c.setLinkMan

 

 

返回list,list裡面每部分是數組形式

 

 

 

2 示範迫切內串連

(1)迫切內串連和內串連底層實現一樣的

(2)區別:使用內串連返回list中每部分是數組,迫切內串連返回list每部分是對象

(3)hql語句寫法

- from  Customer  c  inner  join  fetch  c.setLinkMan

 

 

 

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每部分是對象

 

 

1 右外串連hql語句:

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

 

Hibernate檢索策略檢索策略的概念

1 hibernate檢索策略分為兩類:

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

 

(2)延遲查詢:根據id查詢,還有load方法,調用load方法不會馬上發送語句查詢資料,只有得到對象裡面的值時候才會發送語句查詢資料庫

 

2 延遲查詢分成兩類:

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

 

(2)關聯層級延遲:

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

 

 

 

關聯層級延遲操作

1 在對應檔中進行配置實現

(1)根據客戶得到所有的連絡人,在客戶對應檔中配置

 

2 在set標籤上使用屬性

(1)fetch:值select(預設)

(2)lazy:值

- true:延遲(預設)

- false:不延遲

- extra:極其延遲

 

(1)調用get之後,發送兩條sql語句

 

(1)極其懶惰,要什麼值給什麼值

 

 

批量抓取

1 查詢所有的客戶,返回list集合,遍曆list集合,得到每個客戶,得到每個客戶的所有連絡人

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

  

2 在客戶的對應檔中,set標籤配置

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

 

Hibernate查詢方式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.