1. 程式人生 > >六. Hibernate的簡單查詢

六. 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 個數);