`

Hibernate Restrictions or

 
阅读更多

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

 

  1. 方法说明

方法

说明

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;

分享到:
评论

相关推荐

    Hibernate Criteria用法大全.docx

    - `Restrictions.or()`: 逻辑或 - `Restrictions.not()`: 逻辑非 - `Restrictions.in()`: 等于列表中的某一个值 - `Restrictions.notIn()`: 不等于列表中的任何值 - `Restrictions.between()`: 介于两者之间 -...

    hibernate-shards.jar

    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".) ...

    Hibernate criteria基本操作

    Criterion crit1 = Restrictions.or(Restrictions.eq("name", "刘伟"), Restrictions.between("id", 100, 1000)); ``` 7. 原生 SQL 语句: 虽然不推荐,但可以使用 `sqlRestriction` 执行自定义 SQL: ```java ...

    Restrictions用法.docx

    在Java的持久化框架Hibernate中,`Restrictions`类是用于构建Criteria查询的重要工具。Criteria查询是一种面向对象的查询方式,它允许开发者通过API来构建SQL语句,而无需直接编写SQL字符串,提高了代码的可读性和...

    Hibernate三大类查询总结

    此外,Hibernate允许我们直接使用SQL表达式,如通过`Restrictions.sql()`方法实现,但需要注意的是,`{alias}`需要替换为查询实体的列别名。 ```java List&lt;Cat&gt; cats = sess.createCriteria(Cat.class) .add...

    Hibernate的Criteria用法总结

    Junction接口(包括conjunction和disjunction)用于组合多个Criterion,分别表示逻辑AND和OR。Restrictions工具类提供了创建Criterion的静态方法,例如`eq()`、`ge()`、`between()`等。 Example是另一种特殊的...

    Hibernate中Criteria的完整用法

    而 Junction 的实际使用是它的两个子类 conjunction 和 disjunction,分别是使用 AND 和 OR 操作符进行来联结查询条件集合。 Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态...

    Restrictions用法.pdf

    8. `Restrictions.and`和`Restrictions.or`: 分别表示逻辑与(AND)和逻辑或(OR)。例如,`and(Restrictions.eq("gender", "M"), Restrictions.gt("age", 18))`会找到性别为男且年龄大于18的学生。 9. `...

    hibernate creteria

    `Restrictions` 类提供了 `Restrictions.or` 和 `Restrictions.and` 方法来实现这一点。例如,查找名字以 "Fritz" 开头,年龄为0或年龄为空的猫,可以这样写: ```java List&lt;Cat&gt; cats = sess.createCriteria(Cat....

    Hibernate的Criteria用法总结.doc

    Junction 的实际使用是它的两个子类 conjunction 和 disjunction,分别是使用 AND 和 OR 操作符进行来联结查询条件集合。 Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法...

    hibernate criteria的使用方法

    crit.add(Restrictions.or(Restrictions.eq("age", 2), Restrictions.like("name", "Fritz%"))); ``` - **不在集合中**: ```java crit.add(Restrictions.not(Restrictions.in("age", new Integer[]{2, 3}))); ...

    Hibernate的Criteria用法

    - `and`和`or`: 逻辑与和逻辑或,用于组合多个条件,如`Restrictions.and(cond1, cond2)`和`Restrictions.or(cond1, cond2)`。 3. **关联查询**: 如果需要进行关联查询,例如查询Person与Department的一对多关系...

    Hibernate学习笔记

    8. `Restrictions.and()`, `Restrictions.or()`: 用于组合多个条件,实现逻辑与或操作,如`Restrictions.and(Restrictions.eq("name", "Erica"), Restrictions.eq("sex", new Integer(1)))`。 原生SQL支持: 在某些...

    Hibernate中Criteria的完整用法.docx

    其中 Junction 的实际使用是它的两个子类 conjunction 和 disjunction,分别是使用 AND 和 OR 操作符进行来联结查询条件集合。Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态...

    Hibernate - DetachedCriteria 的完整用法

    Junction 的实际使用是它的两个子类 conjunction 和 disjunction,分别是使用 AND 和 OR 操作符来联结查询条件集合。 Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法,如...

    Hibernate-Criteria 模糊查询

    这可以通过使用`Restrictions.or()`和`Restrictions.like()`组合来完成。 ```java // 查找名字或邮箱中包含“Erica”的用户 Criteria criteria = session.createCriteria(User.class); Criterion nameCriterion = ...

    Hibernate实体查询(ceriteria)精解

    或者,可以使用 `Restrictions.or` 方法组合多个条件: ```java List&lt;Cat&gt; cats = sess.createCriteria(Cat.class) .add(Restrictions.like("name", "Fritz%")) .add(Restrictions.or( Restrictions.eq("age", ...

    Hibernate中Criteria的用法

    .add(Restrictions.or( Restrictions.eq("age", new Integer(0)), Restrictions.isNull("age") )) .list(); ``` #### 五、使用DetachedCriteria 除了直接使用`Criteria`外,还可以使用`DetachedCriteria`。...

Global site tag (gtag.js) - Google Analytics