1. 程式人生 > >Hibernate學習筆記(5)---Query接口

Hibernate學習筆記(5)---Query接口

center 結束 mce factory rst lis 聚集 數據庫 ber

Hibernate中具有三種檢索方式(HQL,QBC,SQL)

Query接口

一個查詢接口,用於向數據庫中查詢對象。並控制執行查詢的過程。Query接口內封裝了一個HQL查詢語句。

舉個栗子

//查詢持久化類user

Session session = sessionFactory.openSession(); //創建session實例
String hql ="from user as u where age>18";    //HQL語句,as別名可以省略不寫
Query query = session.createQuery(hql);//創建query實例
List users = query.list();// 返回list集合

  HQL運算符大致上與SQL的相似

= 等於 <> 不等於
> 大於 < 小於
>= 大於等於 <= 小於等於
is null 值為空 is not unll 值不為空
in 等於列表中的某一個值 no in 不等於列表中的某一個值
between 在兩個值之間 no between 不在兩個值之間
like 字符串匹配 and 邏輯與
or 邏輯或 not 邏輯非

查詢所有

from+實體類名

Query query =session.createQuery(from User);
Liset<User> list = query.list();

  

條件查詢

from +實體類名 +where 實體類名屬性名 ?

Query query =session.createQuery(from User u where u.id=? and u.name=?);
query.setParameter(1,5);
query.setParameter(2,"小明");//向問號裏面設置值,有幾個問號設置幾個
List<User> list = query.list();

排序查詢

from 實體類 order by 實體類屬性 asc(升)或者desc(降)

分頁查詢

mysql實現分頁 limit關鍵字,而在hql中語句中不能寫limit所有我們得用hibernate的query對象封裝的兩個類實現分頁

Query query = session.createQuery(User);
//設置開始位置
query.setFirstResult(0);
//設置結束位置
query.setMaxResults(3);

投影查詢

select 實體類屬性名 1 ,實體類名2 from +實體類名

聚集函數查詢

聚集函數 count記錄數 , sum 相加, avg 平均, max 最大 ,min 最小

select count(*) from 實體類名

更新

使用executeUodate()方法

String hql ="update User set age=23 where age = 20"
Query query = session.createQuery(hql);
query.executeUpdate();

刪除

通過使用executeUodate()方法也可以實現刪除

String hql ="delete from User where age 20"
Query query = session.createQuery(hql);
query.executeUpdate();

  ps:HQL語句它采用的面向對象的查詢方式,並提供了豐富和靈活的查詢特征,hibernate中將HQL作為官方推薦的標準查詢方式。

下節:另外一種數據查詢接口-----Criteria接口(QBC)

Hibernate學習筆記(5)---Query接口