Hibernate Criteria

HQL運算符web

QBC運算符session

含義less

=spa

Restrictions.eq()orm

等於equal對象

<> 排序

Restrictions.ne()ci

不等於not equal字符串

get

Restrictions.gt()

大於greater than

>=

Restrictions.ge()

大於等於greater than or equal

Restrictions.lt()

小於less than

<=

Restrictions.le()

小於等於less than or equal

is null

Restrictions.isnull()

等於空值

is not null

Restrictions.isNotNull()

非空值

like

Restrictions.like()

字符串模式匹配

and

Restrictions.and()

邏輯與

and

Restrictions.conjunction()

邏輯與

or

Restrictions.or()

邏輯或

or

Restrictions.disjunction()

邏輯或

not

Restrictions.not()

邏輯非

in(列表)

Restrictions.in()

等於列表中的某一個值

not in(列表)

Restrictions.not(Restrictions.in())

不等於列表中任意一個值

between x and y

Restrictions.between()

閉區間xy中的任意值

not between x and y

Restrictions.not(Restrictions..between())

小於值X或者大於值y

 

 

 

1.經常使用的查詢限制方法

 

在例程9-1中,Restrictions.eq()方法表示equal,即等於的狀況。Restrictions類提供了查詢限制機制。它提供了許多方法,以實現查詢限制。這些方法及其餘一些criteria經常使用查詢限制方法列於表9-1中。

 

表9-1 Criteria Query經常使用的查詢限制方法

 

方    法

說    明

 

Restrictions.eq()

equal,=

 

Restrictions.allEq()

參數爲Map對象,使用key/value進行多個等於的對比,至關於多個Restrictions.eq()的效果

 

Restrictions.gt()

greater-than, >

 

Restrictions.lt()

less-than, <

 

Restrictions.le()

less-equal, <=

 

Restrictions.between()

對應SQL的between子句

 

Restrictions.like()

對應SQL的like子句

 

Restrictions.in()

對應SQL的in子句

 

Restrictions.and()

and關係

 

Restrictions.or()

or關係

 

Restrictions.isNull()

判斷屬性是否爲空,爲空返回true,不然返回false

 

Restrictions.isNotNull()

與Restrictions.isNull()相反

 

Order.asc()

根據傳入的字段進行升序排序

 

Order.desc()

根據傳入的字段進行降序排序

 

MatchMode.EXACT

字符串精確匹配,至關於「like 'value'」

 

MatchMode.ANYWHERE

字符串在中間位置,至關於「like '%value%'」

 

MatchMode.START

字符串在最前面的位置,至關於「like 'value%'」

 

MatchMode.END

字符串在最後面的位置,至關於「like '%value'」

 

例1:查詢學生名字以t開頭的全部Student對象。

 

Criteria cr = session.createCriteria(Student.class);

cr.add(Restrictions.like(「name」, 「t%」))

List list = cr.list();

Student stu = (Student)list.get(0);

 

或者使用另外一種方式:

Criteria cr = session.createCriteria(Student.class);

cr.add(Restrictions.like(「name」, 「t」, MatchMode.START))

List list = cr.list();

Student stu = (Student)list.get(0);

 

例2:查詢學生姓名在Bill, Jack和Tom之間的全部Student對象。

String[] names = {「Bill」, 「Jack」, 「Tom」}

Criteria cr = session.createCriteria(Student.class);

cr.add(Restrictions.in(「name」, names))

List list = cr.list();

Student stu = (Student)list.get(0);

 

例3:查詢學生的年齡age等於22或age爲空(null)的全部Student對象。

Criteria cr = session.createCriteria(Student.class);

cr.add(Restrictions.eq(「age」, new Integer(22));

cr.add(Restrictions.isNull(「age」));

List list = cr.list();

Student stu = (Student)list.get(0);

 

例4:查詢學生姓名以字母F開頭的全部Student對象,並按姓名升序排序。

Criteria cr = session.createCriteria(Student.class);

cr.add(Restrictions.like(「name」, 「F%」);

cr.addOrder(Order.asc(「name」));

List list = cr.list();

Student stu = (Student)list.get(0);

 

調用Order.asc的方法應是Criteria的addOrder()方法。

相關文章
相關標籤/搜索