Hibernate學習(Hibernate查詢方式)

Hibernate查詢方式

  1. 對象導航查詢
    (1)根據id查詢某個客戶,再查詢這個客戶里面所有的聯系人
  2. OID查詢
    (1)根據id查詢某一條記錄,返回對象
  3. HQL查詢
    (1)Query對象,寫hql語句實現查詢
  4. QBC查詢
    (1)Criteria對象
  5. 本地sql查詢
    (1)SQLQuery對象,使用普通sql實現查詢

對象導航查詢

  1. 查詢某個客戶里面所有聯系人過程,使用對象導航實現
  2. 代碼
1.png

OID查詢

  1. 根據id查詢記錄
    (1)調用session里面的get方法實現
2.png

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.png

條件查詢

  1. hql條件查詢語句寫法:
    (1) from 實體類名稱 where 實體類屬性名稱=? and實體類屬性名稱=?
    from 實體類名稱 where 實體類屬性名稱 like ?
  2. 代碼
2.png

模糊查詢

3.png

排序查詢

  1. hql排序語句寫法
    (1)from 實體類名稱 order by 實體類屬性名稱 asc/desc
4.png

分頁查詢

  1. mysql實現分頁
    (1)使用關鍵字 limit實現
SELECT * FROM S_MENU LIMIT 0,3;
  1. 在hql中實現分頁
    (1)在hql操作中,在語句里面不能寫limit,hibernate的Query對象封裝兩個方法實現分頁操作
5.png

投影查詢

  1. 投影查詢:查詢不是所有字段值,而是部分字段的值
  2. 投影查詢hql語句寫法:
    (1)select 實體類屬性名稱1, 實體類屬性名稱2 from 實體類名稱
    (2)select 后面不能寫 * ,不支持的
  3. 具體實現
6.png

聚集函數使用

  1. 常用的聚集函數
    (1)count、sum、avg、max、min
  2. hql聚集函數語句寫法
    (1)查詢表記錄數
    select count(*) from 實體類名稱
7.png

QBC查詢

  1. 使用hql查詢需要寫hql語句實現,但是使用qbc時候,不需要寫語句了,使用方法實現
  2. 使用qbc時候,操作實體類和屬性
  3. 使用qbc,使用Criteria對象實現

查詢所有

  1. 創建Criteria對象
  2. 調用方法得到結果
8.png

條件查詢

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

9.png
10.png

排序查詢

1.png

分頁查詢

2.png

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

統計查詢

離線查詢

  1. servlet調用service,service調用dao
    (1)在dao里面對數據庫crud操作
    (2)在dao里面使用hibernate框架,使用hibernate框架時候,調用session里面的方法實現功能
4.png

HQL多表查詢

Mysql里面多表查詢

內連接

5.png

左外連接

6.png

右外連接

7.png

HQL實現多表查詢

Hql多表查詢
(1)內連接
(2)左外連接
(3)右外連接
(4)迫切內連接
(5)迫切左外連接
#######HQL內連接

  1. 內連接查詢hql語句寫法:以客戶和聯系人為例
    (1)from Customer c inner join c.setLinkMan
8.png

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

  1. 演示迫切內連接
    (1)迫切內連接和內連接底層實現一樣的
    (2)區別:使用內連接返回list中每部分是數組,迫切內連接返回list每部分是對象
    (3)hql語句寫法
    from Customer c inner join fetch c.setLinkMan
9.png

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

  3. 右外連接hql語句:
    (1)from Customer c right outer join c.setLinkMan

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • 本文包括:1、Hibernate 的查詢方式2、HQL (Hibernate Query Language) 查詢...
    廖少少閱讀 2,688評論 0 15
  • 一 對象導航查詢 根據id查詢某個客戶,再查詢這個客戶里面所有的聯系人 查詢某個客戶里面所有聯系人過程,使用對象導...
    常威爆打來福閱讀 1,094評論 3 6
  • 一. Java基礎部分.................................................
    wy_sure閱讀 3,837評論 0 11
  • 有多少你我就有多少酸楚 不為別離 只是一下子溜走了所有經過
    初四的心閱讀 247評論 2 5