QBC檢索方式

2021-08-03 23:13:11 字數 3368 閱讀 4303

**技術分析之qbc檢索方式**

0. qbc:query by criteria  按條件進行查詢

1. 簡單查詢,使用的是criteria介面

listlist = session.createcriteria(customer.class).list();

for (customer customer : list)

2. 排序查詢

* 需要使用addorder()的方法來設定引數,引數使用org.hibernate.criterion.order物件

* 具體**如下:

session session = hibernateutils.getcurrentsession();

transaction tr = session.begintransaction();

criteria criteria = session.createcriteria(linkman.class);

// 設定排序

criteria.addorder(order.desc("lkm_id"));

listlist = criteria.list();

for (linkman linkman : list)

tr.commit();

3. 分頁查詢

* qbc的分頁查詢也是使用兩個方法

* setfirstresult();

* setmaxresults();

* **如下;

session session = hibernateutils.getcurrentsession();

transaction tr = session.begintransaction();

criteria criteria = session.createcriteria(linkman.class);

// 設定排序

criteria.addorder(order.desc("lkm_id"));

criteria.setfirstresult(0);

criteria.setmaxresults(3);

listlist = criteria.list();

for (linkman linkman : list)

tr.commit();

4. 條件查詢(criterion是查詢條件的介面,restrictions類是hibernate框架提供的工具類,使用該工具類來設定查詢條件)

* 條件查詢使用criteria介面的add方法,用來傳入條件。

* 使用restrictions的新增條件的方法,來新增條件,例如:

* restrictions.eq

-- 相等

* restrictions.gt

-- 大於號

* restrictions.ge

-- 大於等於

* restrictions.lt

-- 小於

* restrictions.le

-- 小於等於

* restrictions.between

-- 在之間

* restrictions.like

-- 模糊查詢

* restrictions.in

-- 範圍

* restrictions.and

-- 並且

* restrictions.or

-- 或者

* 測試**如下

session session = hibernateutils.getcurrentsession();

transaction tr = session.begintransaction();

criteria criteria = session.createcriteria(linkman.class);

// 設定排序

criteria.addorder(order.desc("lkm_id"));

// 設定查詢條件

criteria.add(restrictions.or(restrictions.eq("lkm_gender", "男"), restrictions.gt("lkm_id", 3l)));

listlist = criteria.list();

for (linkman linkman : list)

tr.commit();

5. 聚合函式查詢(projection的聚合函式的介面,而projections是hibernate提供的工具類,使用該工具類設定聚合函式查詢)

* 使用qbc的聚合函式查詢,需要使用criteria.setprojection()方法

* 具體的**如下

session session = hibernateutils.getcurrentsession();

transaction tr = session.begintransaction();

criteria criteria = session.createcriteria(linkman.class);

criteria.setprojection(projections.rowcount());

listlist = criteria.list();

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

system.out.println(count);

tr.commit();

----------

**技術分析之離線條件查詢**

1. 離線條件查詢使用的是detachedcriteria介面進行查詢,離線條件查詢物件在建立的時候,不需要使用session物件,只是在查詢的時候使用session物件即可。

2. 建立離線條件查詢物件

* detachedcriteria criteria = detachedcriteria.forclass(linkman.class);

3. 具體的**如下

session session = hibernateutils.getcurrentsession();

transaction tr = session.begintransaction();

detachedcriteria criteria = detachedcriteria.forclass(linkman.class);

// 設定查詢條件

criteria.add(restrictions.eq("lkm_gender", "男"));

// 查詢資料

listlist = criteria.getexecutablecriteria(session).list();

for (linkman linkman : list)

tr.commit();

----------

QBC檢索方式

依賴介面 criteria 資料模型 tb user userid,username tb addr addrid,addrname,userid entity class addr class user 備註 省略geters 和 seters 例 criteria c session.creat...

Hibernate的QBC檢索方式

一直習慣了hibernate的hql查詢,一直也覺得挺方便,對於最近專案裡出現的qbc org.hibernate.criteria介面 也是報著一種看看的心理,因為做j2ee這麼久了,也寫了一大堆hql的工具類,起初的心理也只是看看而已 session session hibernatesessi...

Hiberante中的QBC檢索方式

qbc就是query by criteria qbc是hibernate提供的幾種檢索方式之一。一 這裡先小做乙個總結 hibernate檢索物件的方式有哪些呢?1 導航物件圖檢索方式。根據已經載入的物件,導航到其他物件。比如 對於已經載入的班級物件class1.呼叫它的getstudents 方法...