1 hibernate的查詢方式mysql
2 對象導航查詢sql
3 hql查詢數據庫
(1)查詢全部數組
(2)條件查詢session
(3)排序查詢框架
(4)分頁查詢ssh
(5)投影查詢函數
(6)彙集函數使用fetch
4 qbc查詢hibernate
(1)查詢全部
(2)條件查詢
(3)排序查詢
(4)分頁查詢
(5)統計查詢
(6)離線查詢
5 hql多表查詢
(1)mysql多表查詢回顧
(2)hql多表查詢
- 內鏈接、迫切內鏈接、左外鏈接、迫切左外鏈接、右外鏈接
6 hibernate的檢索策略
(1)概念
- hibernate分紅 :當即和延遲查詢
- 延遲查詢分紅:類級別和關聯級別延遲
(2)具體操做
1 對象導航查詢
(1)根據id查詢某個客戶,再查詢這個客戶裏面全部的聯繫人
2 OID查詢
(1)根據id查詢某一條記錄,返回對象
3 HQL查詢
(1)Query對象,寫hql語句實現查詢
4 QBC查詢
(1)Criteria對象
5 本地sql查詢
(1)SQLQuery對象,使用普通sql實現查詢
1 查詢某個客戶裏面全部聯繫人過程,使用對象導航實現
2 代碼
1 根據id查詢記錄
(1)調用session裏面的get方法實現
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 實體類名稱
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練習中具體應用
1 內鏈接
2 左外鏈接
3 右外鏈接
Hql多表查詢
(1)內鏈接
(2)左外鏈接
(3)右外鏈接
(4)迫切內鏈接
(5)迫切左外鏈接
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
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
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值,值越大發送語句越少