Hibernate Criteria介面 setProjection方法:設定查詢的投影列

2020-07-16 10:04:59
setProjection 方法用於設定查詢的投影列。該方法與 Projections 類結合不僅可以實現簡單的投影查詢,而且可以實現資料的分組統計。

語法:

setProjection(Projection projection)

引數說明:
  • projection:用於指定投影列或分組統計條件。

返回值:Criteria 物件。

範例1

應用投影查詢,查詢資料表中的全部使用者 ID,關鍵程式碼如下:
Criteria criteria = session.createCriteria(UserForm.class);  //範例化Criteria物件
criteria.setProjection(Projections.id());  //設定查詢列
list = criteria.list();  //執行查詢
Iterator it = list.iterator();  //獲取查詢結果疊代器
while(it.hasNext()){  //迴圈遍歷查詢結果
  System.out.println(it.next());
}

範例2

應用投影查詢,查詢資料表中的全部使用者 ID 和使用者名稱,關鍵程式碼如下:
Criteria criteria = session.createCriteria(UserForm.class);  //範例化Criteria物件
criteria.setProjection(Projections.projectionList()
                       .add(Projections.id())
                       .add(Projections.property("username"))  //查詢資料表全部使用者ID和使用者名稱
                      );
List list = criteria.list();  //獲取查詢結果
Iterator it = list.iterator();  //獲取查詢結果疊代器
while(it.hasNext()){  //迴圈遍歷疊代器
  Object[] o = (Object[])it.next();
  System.out.println("ID:"+o[0]+"使用者名稱:"+o[1]);
}

範例3

獲取訂單資訊表中的合計金額,關鍵程式碼如下:
Criteria criteria = session.createCriteria(OrderForm.class);  //獲取Criteria範例
criteria.setProjection(Projections.sum("money"));  //設定查詢列
double sumMoney = (Double)criteria.uniqueResult();  //獲取訂單資訊表總金額
System.out.println("合計金額:"+sumMoney);