Hibernate查詢方式
- 對(duì)象導(dǎo)航查詢
(1)根據(jù)id查詢某個(gè)客戶,再查詢這個(gè)客戶里面所有的聯(lián)系人 - OID查詢
(1)根據(jù)id查詢某一條記錄,返回對(duì)象 - HQL查詢
(1)Query對(duì)象,寫(xiě)hql語(yǔ)句實(shí)現(xiàn)查詢 - QBC查詢
(1)Criteria對(duì)象 - 本地sql查詢
(1)SQLQuery對(duì)象,使用普通sql實(shí)現(xiàn)查詢
對(duì)象導(dǎo)航查詢
- 查詢某個(gè)客戶里面所有聯(lián)系人過(guò)程,使用對(duì)象導(dǎo)航實(shí)現(xiàn)
- 代碼

1.png
OID查詢
- 根據(jù)id查詢記錄
(1)調(diào)用session里面的get方法實(shí)現(xiàn)

2.png
HQL查詢
- hql:hibernate query language,hibernate提供一種查詢語(yǔ)言,hql語(yǔ)言和普通sql很相似,區(qū)別:普通sql操作數(shù)據(jù)庫(kù)表和字段,hql操作實(shí)體類和屬性
- 常用的hql語(yǔ)句
(1)查詢所有: from 實(shí)體類名稱
(2)條件查詢: from 實(shí)體類名稱 where 屬性名稱=?
(3)排序查詢: from 實(shí)體類名稱 order by 實(shí)體類屬性名稱 asc/desc - 使用hql查詢操作時(shí)候,使用Query對(duì)象
(1)創(chuàng)建Query對(duì)象,寫(xiě)hql語(yǔ)句
(2)調(diào)用query對(duì)象里面的方法得到結(jié)果
查詢所有
- 查詢所有客戶記錄
(1)創(chuàng)建Query對(duì)象,寫(xiě)hql語(yǔ)句
(2)調(diào)用query對(duì)象里面的方法得到結(jié)果 - 查詢所有: from 實(shí)體類名稱

1.png
條件查詢
- hql條件查詢語(yǔ)句寫(xiě)法:
(1) from 實(shí)體類名稱 where 實(shí)體類屬性名稱=? and實(shí)體類屬性名稱=?
from 實(shí)體類名稱 where 實(shí)體類屬性名稱 like ? - 代碼

2.png
模糊查詢

3.png
排序查詢
- hql排序語(yǔ)句寫(xiě)法
(1)from 實(shí)體類名稱 order by 實(shí)體類屬性名稱 asc/desc

4.png
分頁(yè)查詢
- mysql實(shí)現(xiàn)分頁(yè)
(1)使用關(guān)鍵字 limit實(shí)現(xiàn)
SELECT * FROM S_MENU LIMIT 0,3;
- 在hql中實(shí)現(xiàn)分頁(yè)
(1)在hql操作中,在語(yǔ)句里面不能寫(xiě)limit,hibernate的Query對(duì)象封裝兩個(gè)方法實(shí)現(xiàn)分頁(yè)操作

5.png
投影查詢
- 投影查詢:查詢不是所有字段值,而是部分字段的值
- 投影查詢hql語(yǔ)句寫(xiě)法:
(1)select 實(shí)體類屬性名稱1, 實(shí)體類屬性名稱2 from 實(shí)體類名稱
(2)select 后面不能寫(xiě) * ,不支持的 - 具體實(shí)現(xiàn)

6.png
聚集函數(shù)使用
- 常用的聚集函數(shù)
(1)count、sum、avg、max、min - hql聚集函數(shù)語(yǔ)句寫(xiě)法
(1)查詢表記錄數(shù)
select count(*) from 實(shí)體類名稱

7.png
QBC查詢
- 使用hql查詢需要寫(xiě)hql語(yǔ)句實(shí)現(xiàn),但是使用qbc時(shí)候,不需要寫(xiě)語(yǔ)句了,使用方法實(shí)現(xiàn)
- 使用qbc時(shí)候,操作實(shí)體類和屬性
- 使用qbc,使用Criteria對(duì)象實(shí)現(xiàn)
查詢所有
- 創(chuàng)建Criteria對(duì)象
- 調(diào)用方法得到結(jié)果

8.png
條件查詢
沒(méi)有語(yǔ)句,使用封裝的方法實(shí)現(xiàn)

9.png

10.png
排序查詢

1.png
分頁(yè)查詢

2.png
開(kāi)始位置計(jì)算公式: (當(dāng)前頁(yè)-1)*每頁(yè)記錄數(shù)
統(tǒng)計(jì)查詢

離線查詢
- servlet調(diào)用service,service調(diào)用dao
(1)在dao里面對(duì)數(shù)據(jù)庫(kù)crud操作
(2)在dao里面使用hibernate框架,使用hibernate框架時(shí)候,調(diào)用session里面的方法實(shí)現(xiàn)功能

4.png
HQL多表查詢
Mysql里面多表查詢
內(nèi)連接

5.png
左外連接

6.png
右外連接

7.png
HQL實(shí)現(xiàn)多表查詢
Hql多表查詢
(1)內(nèi)連接
(2)左外連接
(3)右外連接
(4)迫切內(nèi)連接
(5)迫切左外連接
#######HQL內(nèi)連接
- 內(nèi)連接查詢hql語(yǔ)句寫(xiě)法:以客戶和聯(lián)系人為例
(1)from Customer c inner join c.setLinkMan

8.png
返回list,list里面每部分是數(shù)組形式
- 演示迫切內(nèi)連接
(1)迫切內(nèi)連接和內(nèi)連接底層實(shí)現(xiàn)一樣的
(2)區(qū)別:使用內(nèi)連接返回list中每部分是數(shù)組,迫切內(nèi)連接返回list每部分是對(duì)象
(3)hql語(yǔ)句寫(xiě)法
from Customer c inner join fetch c.setLinkMan

9.png
#######HQL左外連接
左外連接hql語(yǔ)句:
(1)from Customer c left outer join c.setLinkMan
(2)迫切左外連接from Customer c left outer join fetch c.setLinkMan左外連接返回list中每部分是數(shù)組,迫切左外連接返回list每部分是對(duì)象
右外連接hql語(yǔ)句:
(1)from Customer c right outer join c.setLinkMan