六. Hibernate的簡單查詢
1.Hibernate持久化操作完成
C(Create): session.save, session.saveOrUpdate,session.persist
U(Update): session.update, session.saveOrUpdate
D(Delete): session.delete
R(Retrive): session.get : 通過ID屬性值,query.getResultList()
2.Hibernate查詢機制
1.HQL語言
2.Query介面
3.HQL概念與功能
1.HQL概念:Hibernate Query Languange,是一個查詢持久物件的語言。
2.功能:針對持久類和屬性查詢。
4.HQL語法
與SQL的查詢語句語法相同。
1.from子句
1.功能:指定查詢的物件的類別
2.語法:
from Model類名
from Model類名 別名
from Model類名 as 別名
案例:
String hql="from BehaveModel ";
String hql="from BehaveModel bm";
String hql="from BehaveModel as bm";
2.where子句
1.功能:對查詢出的物件進行篩選
2.語法:
where 邏輯表示式
3.常見的表示式:
(1)比較運算:
=, >, <, >=, <=, !=, <>
(2)邏輯運算:
and or not
String hql="from EmployeeModel em where em.age>=20 and em.age<=40";
(3)區間運算:
between … and … , not between … and …
案例:
from EmployeeModel em where em.age between20 and 40 from EmployeeModel em where em.age not between20 and 40
(4)模糊運算
like 匹配符, not like 匹配符
案例:
from EmployeeModel em where em.name like '%國%'
from EmployeeModel em where em.name not like '%國_'
(5)集合運算:
in (集合), not in (集合)
案例:
from EmployeeModel em where em.age in (20,30,40)
(6)空運算
is null, is not null, is empty, is not empty
案例:
from EmployeeModel em where em.behaves is empty
from EmployeeModel em where em.behaves is not empty
5.Query介面的主要方法
1.Query物件的取得:
型別:org.hibernate.query.Query 新版
org.hibernate.Query 舊版
語法:
Query<T> query=session.createQuery(hql,T.class);
案例:
Query<BehaveModel> query=session.createQuery(hql,BehaveModel.class);
2.常用的方法:
(1)執行HQL返回物件集合
List<T> list=query.getResultList(); //新版
List<T> list=query.list(); //舊版
案例:
List<BehaveModel> list=query.getResultList();
(2) 執行HQL返回單個物件
T result=query.uniqueResult();
(3)設定HQL引數的方法:
HQL引數型別:
<1>位置引數:
在HQL中使用?,位置從0開始。
from EmployeeModel em where em.age between ? and ?
<2>命名引數:
在HQL中使用 :引數名
from EmployeeModel em where em.age between :min and :max
Query設定引數值方法:
舊版:
query.setXxx(int 位置,Xxx 值); //設定位置引數
query.setXxx(String name,Xxx 值); //設定命名引數
query.setInteger(0, min);
query.setInteger(1, max);
query.setInteger("min", min);
query.setInteger("max", max);
新版:
query.setParameter(int 位置,Xxx 值); //設定位置引數
query.setParameter(String 引數名,Xxx 值); //設定命名引數
(4)設定返回結果位置和個數方法
設定結果的起始位置,從0開始。
query.setFirstResult(int 位置);
設定返回的個數
query.setMaxResults(int 個數);