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()方法。