1. 程式人生 > >Hibernate查詢方式之:HQL查詢(需要使用的類是:Query)

Hibernate查詢方式之:HQL查詢(需要使用的類是:Query)

hibernate查詢方式之:HQL查詢方式:
HQL語句正對的是實體類的名稱和實體類的屬性進行操作
1.查詢所有
格式:from 實體類名稱
Query query = session.createQuery("from User");
List<User> list = query.list();
for(User u :list){
System.out.println(u);
}
2.條件查詢
(1)from 實體類名稱 where 實體類的屬性名稱=?;
Query query = session .createQuery("from User u where u.name=? and u.id=?");
//給?賦值,一般從0開始
query.setParameter(0,"kevin");
query.setParameter(1,12);//表示name=kevin;id=12的資料資訊
List<User> list = query.list();

(2)模糊查詢:
格式:from 實體類名稱 where 實體類屬性名稱 like ? ;
Query query = session.createQuery("from User u where u.name like ?);
query.setParameter(0,k_);//以k開頭,並且只有兩個字母的資料資訊
//query.setParameter(0,"%k%");
List<User> list = query.list();
3.排序查詢
使用關鍵字 order by
格式:from 實體類名稱 order by 實體類屬性名稱 asc/desc //asc:升序 ;desc:降序
Query query = session.createQuery("from User u order by u.id asc");
List<User> list = query.list();

4.分頁查詢:
在mysql中分頁查詢方式:
select * from t_user limit 0,3;//從0開始,每頁顯示資料為3條
在hibernate中如何使用分頁查詢?
//先查詢所有
Query query = session.createQuery("from User");
//設定開始查詢位置
query.setFirstResult(0);
//設定每頁查詢的資料
query.setMaxResult(3);
List<User> list = query.list();

5.投影查詢:就是查詢部分,所有在泛型中要寫Object型別
格式:select 實體類屬性名稱 from 實體類名稱;
注意:不能使用* ;不支援這個*寫法;
Query query = session.createQuery("select u.name from User u");
List<Object> list = query.list():

6.聚合函式查詢
count avg sum max min
格式:
select 聚合函式  from 實體類名稱
Query query = session.createQuery("select count(*) from User");
//呼叫的是uniquenResult()方法
//返回的是Object
//要轉成成int型別,先強制轉換成Long型別,在通過intValue()方法轉換成Int方法
Object count = query.uniquenResult();
Long num = (Long)count
int number = num.intValue();
System.out.println(number);
補充:
在mysql中聚合函式的使用:
1) COUNT
  SELECT COUNT(*) FROM emp;
  --> 計算emp表中所有列都不為NULL的記錄的行數
  SELECT COUNT(comm) FROM emp;
  --> 雲端計算emp表中comm列不為NULL的記錄的行數
如果行數裡面的內容全部為空,那麼不計數了。


2) MAX
  SELECT MAX(sal) FROM emp;
  --> 查詢最高工資


3) MIN
  SELECT MIN(sal) FROM emp;
  --> 查詢最低工資


4) SUM
  SELECT SUM(sal) FROM emp;
  --> 查詢工資合


5) AVG
  SELECT AVG(sal) FROM emp;
  --> 查詢平均工資