Restrictions.or
两个条件或查询:
Restrictions.or(
Restrictions.in("username",list1),Restrictions.idEq(1)
);
三个或多个条件查询:(使用嵌套方式)
criteria.add(
Restrictions.or(
Restrictions.in("username",list1),
Restrictions.or(
Restrictions.idEq(3),
Restrictions.idEq(4)
)
)
);
********************************************
http://xuganggogo.iteye.com/blog/440078
-
方法说明
方法
|
说明
|
Restrictions.eq
|
=
|
Restrictions.allEq
|
利用Map来进行多个等于的限制
|
Restrictions.gt
|
>
|
Restrictions.ge
|
>=
|
Restrictions.lt
|
<
|
Restrictions.le
|
<=
|
Restrictions.between
|
BETWEEN
|
Restrictions.like
|
LIKE
|
Restrictions.in
|
in
|
Restrictions.and
|
and
|
Restrictions.or
|
or
|
Restrictions.sqlRestriction
|
用SQL限定查询
|
2,QBC常用限定方法
Restrictions.eq --> equal,等于.
Restrictions.allEq --> 参数为Map对象,使用key/value进行多个等于的比对,相当于多个Restrictions.eq的效果
Restrictions.gt --> great-than > 大于
Restrictions.ge --> great-equal >= 大于等于
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
Restrictions.isNotNull --> 与isNull相反
Restrictions.sqlRestriction --> SQL限定的查询
Order.asc --> 根据传入的字段进行升序排序
Order.desc --> 根据传入的字段进行降序排序
MatchMode.EXACT --> 字符串精确匹配.相当于"like 'value'"
MatchMode.ANYWHERE --> 字符串在中间匹配.相当于"like '%value%'"
MatchMode.START --> 字符串在最前面的位置.相当于"like 'value%'"
MatchMode.END --> 字符串在最后面的位置.相当于"like '%value'"
例子
查询年龄在20-30岁之间的所有学生对象
List list = session.createCriteria(Student.class)
.add(Restrictions.between("age",new Integer(20),new Integer(30)).list();
查询学生姓名在AAA,BBB,CCC之间的学生对象
String[] names = {"AAA","BBB","CCC"};
List list = session.createCriteria(Student.class)
.add(Restrictions.in("name",names)).list();
查询年龄为空的学生对象
List list = session.createCriteria(Student.class)
.add(Restrictions.isNull("age")).list();
查询年龄等于20或者年龄为空的学生对象
List list = session.createCriteria(Student.class)
.add(Restrictions.or(Restrictions.eq("age",new Integer(20)),
Restrictions.isNull("age")).list();
--------------------------------------------------------------------
使用QBC实现动态查询
public List findStudents(String name,int age){
Criteria criteria = session.createCriteria(Student.class);
if(name != null){
criteria.add(Restrictions.liek("name",name,MatchMode.ANYWHERE));
}
if(age != 0){
criteria.add(Restrictions.eq("age",new Integer(age)));
}
criteria.addOrder(Order.asc("name"));//根据名字升序排列
return criteria.list();
}
-----------------------------------------------------------------------------------
今天用了写hibernate高级查询时用了Restrictions(当然Expression也是可以以的)这个类.感觉不错.
下面的代码写的不易读.其实核心就是一句
Restrictions.or(Restrictions.like(),Restrictions.or(Restrictions.like,........))
里面的or可以无限加的.还是比较好用
Session session = getHibernateTemplate().getSessionFactory()
.openSession();
Criteria criteria = session.createCriteria(Film.class);
List<Film> list = criteria.add(
Restrictions.or(Restrictions.like("description", key,MatchMode.ANYWHERE),
Restrictions.or(Restrictions.like("name", key,MatchMode.ANYWHERE),
Restrictions.or( Restrictions.like("direct", key,MatchMode.ANYWHERE),
Restrictions.or(Restrictions.like("mainplay",key,MatchMode.ANYWHERE),
Restrictions.like("filearea", key,MatchMode.ANYWHERE)))))).list();
session.close();
return list;
分享到:
相关推荐
- `Restrictions.or()`: 逻辑或 - `Restrictions.not()`: 逻辑非 - `Restrictions.in()`: 等于列表中的某一个值 - `Restrictions.notIn()`: 不等于列表中的任何值 - `Restrictions.between()`: 介于两者之间 -...
portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) ...
Criterion crit1 = Restrictions.or(Restrictions.eq("name", "刘伟"), Restrictions.between("id", 100, 1000)); ``` 7. 原生 SQL 语句: 虽然不推荐,但可以使用 `sqlRestriction` 执行自定义 SQL: ```java ...
在Java的持久化框架Hibernate中,`Restrictions`类是用于构建Criteria查询的重要工具。Criteria查询是一种面向对象的查询方式,它允许开发者通过API来构建SQL语句,而无需直接编写SQL字符串,提高了代码的可读性和...
此外,Hibernate允许我们直接使用SQL表达式,如通过`Restrictions.sql()`方法实现,但需要注意的是,`{alias}`需要替换为查询实体的列别名。 ```java List<Cat> cats = sess.createCriteria(Cat.class) .add...
Junction接口(包括conjunction和disjunction)用于组合多个Criterion,分别表示逻辑AND和OR。Restrictions工具类提供了创建Criterion的静态方法,例如`eq()`、`ge()`、`between()`等。 Example是另一种特殊的...
而 Junction 的实际使用是它的两个子类 conjunction 和 disjunction,分别是使用 AND 和 OR 操作符进行来联结查询条件集合。 Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态...
8. `Restrictions.and`和`Restrictions.or`: 分别表示逻辑与(AND)和逻辑或(OR)。例如,`and(Restrictions.eq("gender", "M"), Restrictions.gt("age", 18))`会找到性别为男且年龄大于18的学生。 9. `...
`Restrictions` 类提供了 `Restrictions.or` 和 `Restrictions.and` 方法来实现这一点。例如,查找名字以 "Fritz" 开头,年龄为0或年龄为空的猫,可以这样写: ```java List<Cat> cats = sess.createCriteria(Cat....
Junction 的实际使用是它的两个子类 conjunction 和 disjunction,分别是使用 AND 和 OR 操作符进行来联结查询条件集合。 Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法...
crit.add(Restrictions.or(Restrictions.eq("age", 2), Restrictions.like("name", "Fritz%"))); ``` - **不在集合中**: ```java crit.add(Restrictions.not(Restrictions.in("age", new Integer[]{2, 3}))); ...
- `and`和`or`: 逻辑与和逻辑或,用于组合多个条件,如`Restrictions.and(cond1, cond2)`和`Restrictions.or(cond1, cond2)`。 3. **关联查询**: 如果需要进行关联查询,例如查询Person与Department的一对多关系...
8. `Restrictions.and()`, `Restrictions.or()`: 用于组合多个条件,实现逻辑与或操作,如`Restrictions.and(Restrictions.eq("name", "Erica"), Restrictions.eq("sex", new Integer(1)))`。 原生SQL支持: 在某些...
其中 Junction 的实际使用是它的两个子类 conjunction 和 disjunction,分别是使用 AND 和 OR 操作符进行来联结查询条件集合。Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态...
Junction 的实际使用是它的两个子类 conjunction 和 disjunction,分别是使用 AND 和 OR 操作符来联结查询条件集合。 Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法,如...
这可以通过使用`Restrictions.or()`和`Restrictions.like()`组合来完成。 ```java // 查找名字或邮箱中包含“Erica”的用户 Criteria criteria = session.createCriteria(User.class); Criterion nameCriterion = ...
或者,可以使用 `Restrictions.or` 方法组合多个条件: ```java List<Cat> cats = sess.createCriteria(Cat.class) .add(Restrictions.like("name", "Fritz%")) .add(Restrictions.or( Restrictions.eq("age", ...
.add(Restrictions.or( Restrictions.eq("age", new Integer(0)), Restrictions.isNull("age") )) .list(); ``` #### 五、使用DetachedCriteria 除了直接使用`Criteria`外,还可以使用`DetachedCriteria`。...