HQL的查詢方式

2021-08-03 23:13:11 字數 2552 閱讀 3176

**技術分析之hql的查詢方式概述**

1. hql的介紹

* hql(hibernate query language) 是物件導向的查詢語言, 它和 sql 查詢語言有些相似

* 在 hibernate 提供的各種檢索方式中, hql 是使用最廣的一種檢索方式

2. hql與sql的關係

* hql 查詢語句是物件導向的,hibernate負責解析hql查詢語句, 然後根據物件-關係對映檔案中的對映資訊, 把 hql 查詢語句翻譯成相應的 sql 語句. 

* hql 查詢語句中的主體是域模型中的類及類的屬性

* sql 查詢語句是與關聯式資料庫繫結在一起的. sql查詢語句中的主體是資料庫表及表的字段

----------

**技術分析之hql的查詢演示**

1. hql基本的查詢格式

* 支援方法鏈的程式設計,即直接呼叫list()方法

* 簡單的**如下

* session.createquery("from customer").list();

2. 使用別名的方式

* 可以使用別名的方式

* session.createquery("from customer c").list();

* session.createquery("select c from customer c").list();

3. 排序查詢

* 排序查詢和sql語句中的排序的語法是一樣的

* 公升序

* session.createquery("from customer order by cust_id").list();

* 降序

* session.createquery("from customer order by cust_id desc").list();

4. 分頁查詢

* hibernate框架提供了分頁的方法,咱們可以呼叫方法來完成分頁

* 兩個方法如下

* setfirstresult(a)

-- 從哪條記錄開始,如果查詢是從第一條開啟,值是0

* setmaxresults(b)

-- 每頁查詢的記錄條數

* 演示**如下

* listlist = session.createquery("from linkman").setfirstresult(0).setmaxresults().list();

5. 帶條件的查詢

* setparameter("?號的位置,預設從0開始","引數的值"); 不用考慮引數的具體型別

* 按位置繫結引數的條件查詢(指定下標值,預設從0開始)

* 按名稱繫結引數的條件查詢(hql語句中的 ? 號換成 :名稱 的方式)

* 例如**如下

query query = session.createquery("from linkman where lkm_name like ? order by lkm_id desc");

query.setfirstresult(0).setmaxresults(3);

query.setparameter(0, "%熊%");

listlist = query.list();

for (linkman linkman : list)

* 如果查詢兩個字段,也可以把這兩個字段封裝到物件中

* 先在持久化類中提供對應欄位的構造方法

* 使用下面這種hql語句的方式

listlist = session.createquery("select new customer(c.cust_name,c.cust_level) from customer c").list();

for (customer customer : list)

----------

**技術分析之聚合函式查詢**

1. 獲取總的記錄數

session session = hibernateutils.getcurrentsession();

transaction tr = session.begintransaction();

listlist = session.createquery("select count(c) from customer c").list();

long count = list.get(0).longvalue();

system.out.println(count);

tr.commit();

2. 獲取某一列資料的和

session session = hibernateutils.getcurrentsession();

transaction tr = session.begintransaction();

listlist = session.createquery("select sum(c.cust_id) from customer c").list();

long count = list.get(0).longvalue();

system.out.println(count);

tr.commit();

----------

編寫簡單的hql命令 hql 的執行方式

注意指令碼放的目錄和許可權 hive e sql語句 hive f file sql.txt crontab e 裡面的指令碼命令要寫絕對命令 crontab e 編輯 crontab l 檢視 crontab r 刪除 hql指令碼編寫的注意點 1 寫好sh指令碼 然後利用crontab e 進行...

HQL多表查詢

物件之間總是有各種各樣的關係,關聯關係是類之間最常見的關係。多表查詢是hql中的強大功能之一,包括內連線 左連線和右連線等。在資料庫中用到了3個表 student 學生表 course 課程表 和sc 選課表 在現實模型中,乙個學生可以選擇多門課程,乙個課程可以被多個學生選擇,student和cou...

HQL查詢條件

hql運算子 qbc運算子 含義 restrictions.eq 等於equal restrictions.ne 不等於not equal restrictions.gt 大於greater than restrictions.ge 大於等於greater than or equal restric...