Hibernate學習筆記(5)---Query接口
阿新 • • 發佈:2017-09-24
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接口