Hibernate allEq方法:設定一系列的相等條件

2020-07-16 10:05:00
allEq 方法用於設定一系列的相等條件,相當於多個 Restrictions.eq 方法的疊加。

語法:

allEq(Map propertyNameValues)

引數說明:
  • propertyNameValues:引數為一個 Map 物件,其中包含了多個屬性值的對應關係。

返回值:Criterion 物件的範例。

說明:應用 allEq 方法時,生成的相等表示式是通過 and 來連線的,也就是需要滿足新增的所有條件。

範例

查詢使用者名稱為 sk 且密碼為 111 的使用者資訊,關鍵程式碼如下:
Criteria criteria = session.createCriteria(UserForm.class);  //獲取Criteria物件
Map map = new HashMap();  //建立Map物件
map.put("username","sk");  //向Map中新增物件
map.put("pwd","111");
criteria.add(Restrictions.allEq(map));  //設定向導條件
list = criteria.list();

典型應用

Restrictions 類的 allEq 方法可實現設定一系列的查詢條件,並將這些查詢條件儲存在 Map 集合中。本範例實現使用該方法查詢清華出版社出版的“Java從入門到精通”的圖書價格。

本範例使用 Hibernate 框架查詢資料,在使用該框架前要建立與圖書表 tb_bookes 對應的 JavaBean 物件 Books,以及其對映檔案 Books.hbm.xml,可參考下載的原始碼。建立 Find 類,在該類中定義查詢資料方法,關鍵程式碼如下:
public static void main(String[] args){
  Session session = null;  //宣告Session物件
  try{
    session = HibernateUtil.getSession();  //獲取Session
    session.beginTransaction();  //開啟事務
    Criteria criteria = session.createCriteria(Books.class);  //獲取Criteria物件
    Map map = new HashMap();  //建立Map物件
    map.put("bName","Java開發寶典");  //向Map中新增物件
    map.put("bookConcern","機械工業");
    criteria.add(Restrictions.allEq(map));  //設定查詢條件
    List list = criteria.list();  //獲取查詢結果集
    for(int i=0;i<list.size();i++){  //迴圈遍歷查詢結果集
      Books book = (Books)list.get(i);  //獲取集合中元素
      System.out.println("機械工業的圖書Java開發寶典的價格是:"+book.getPrice());
    }
    session.getTransaction().commit();  //提交事務
  }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();  //出錯將回滾事務
  }finally{
    HibernateUtil.closeSession(session);  //關閉Session物件
  }
}