**技術分析之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 方法...