Hibernate查詢方式
- 對象導航查詢
(1)根據(jù)id查詢某個客戶惹悄,再查詢這個客戶里面所有的聯(lián)系人 - OID查詢
(1)根據(jù)id查詢某一條記錄代虾,返回對象 - HQL查詢
(1)Query對象饮潦,寫hql語句實現(xiàn)查詢 - QBC查詢
(1)Criteria對象 - 本地sql查詢
(1)SQLQuery對象银觅,使用普通sql實現(xiàn)查詢
對象導航查詢
- 查詢某個客戶里面所有聯(lián)系人過程首繁,使用對象導航實現(xiàn)
- 代碼
OID查詢
- 根據(jù)id查詢記錄
(1)調(diào)用session里面的get方法實現(xiàn)
HQL查詢
- hql:hibernate query language坞琴,hibernate提供一種查詢語言哨查,hql語言和普通sql很相似,區(qū)別:普通sql操作數(shù)據(jù)庫表和字段剧辐,hql操作實體類和屬性
- 常用的hql語句
(1)查詢所有: from 實體類名稱
(2)條件查詢: from 實體類名稱 where 屬性名稱=?
(3)排序查詢: from 實體類名稱 order by 實體類屬性名稱 asc/desc - 使用hql查詢操作時候解恰,使用Query對象
(1)創(chuàng)建Query對象,寫hql語句
(2)調(diào)用query對象里面的方法得到結果
查詢所有
- 查詢所有客戶記錄
(1)創(chuàng)建Query對象浙于,寫hql語句
(2)調(diào)用query對象里面的方法得到結果 - 查詢所有: from 實體類名稱
條件查詢
- hql條件查詢語句寫法:
(1) from 實體類名稱 where 實體類屬性名稱=? and實體類屬性名稱=?
from 實體類名稱 where 實體類屬性名稱 like ? - 代碼
模糊查詢
排序查詢
- hql排序語句寫法
(1)from 實體類名稱 order by 實體類屬性名稱 asc/desc
分頁查詢
- mysql實現(xiàn)分頁
(1)使用關鍵字 limit實現(xiàn)
SELECT * FROM S_MENU LIMIT 0,3;
- 在hql中實現(xiàn)分頁
(1)在hql操作中护盈,在語句里面不能寫limit,hibernate的Query對象封裝兩個方法實現(xiàn)分頁操作
投影查詢
- 投影查詢:查詢不是所有字段值羞酗,而是部分字段的值
- 投影查詢hql語句寫法:
(1)select 實體類屬性名稱1, 實體類屬性名稱2 from 實體類名稱
(2)select 后面不能寫 * 腐宋,不支持的 - 具體實現(xiàn)
聚集函數(shù)使用
- 常用的聚集函數(shù)
(1)count、sum檀轨、avg胸竞、max、min - hql聚集函數(shù)語句寫法
(1)查詢表記錄數(shù)
select count(*) from 實體類名稱
QBC查詢
- 使用hql查詢需要寫hql語句實現(xiàn)参萄,但是使用qbc時候卫枝,不需要寫語句了,使用方法實現(xiàn)
- 使用qbc時候讹挎,操作實體類和屬性
- 使用qbc校赤,使用Criteria對象實現(xiàn)
查詢所有
- 創(chuàng)建Criteria對象
- 調(diào)用方法得到結果
條件查詢
沒有語句,使用封裝的方法實現(xiàn)
排序查詢
分頁查詢
開始位置計算公式: (當前頁-1)*每頁記錄數(shù)
統(tǒng)計查詢
離線查詢
- servlet調(diào)用service筒溃,service調(diào)用dao
(1)在dao里面對數(shù)據(jù)庫crud操作
(2)在dao里面使用hibernate框架马篮,使用hibernate框架時候,調(diào)用session里面的方法實現(xiàn)功能
HQL多表查詢
Mysql里面多表查詢
內(nèi)連接
左外連接
右外連接
HQL實現(xiàn)多表查詢
Hql多表查詢
(1)內(nèi)連接
(2)左外連接
(3)右外連接
(4)迫切內(nèi)連接
(5)迫切左外連接
#######HQL內(nèi)連接
- 內(nèi)連接查詢hql語句寫法:以客戶和聯(lián)系人為例
(1)from Customer c inner join c.setLinkMan
返回list怜奖,list里面每部分是數(shù)組形式
- 演示迫切內(nèi)連接
(1)迫切內(nèi)連接和內(nèi)連接底層實現(xiàn)一樣的
(2)區(qū)別:使用內(nèi)連接返回list中每部分是數(shù)組浑测,迫切內(nèi)連接返回list每部分是對象
(3)hql語句寫法
from Customer c inner join fetch c.setLinkMan
#######HQL左外連接
左外連接hql語句:
(1)from Customer c left outer join c.setLinkMan
(2)迫切左外連接from Customer c left outer join fetch c.setLinkMan左外連接返回list中每部分是數(shù)組,迫切左外連接返回list每部分是對象
右外連接hql語句:
(1)from Customer c right outer join c.setLinkMan