`

Restrictions用法

 
阅读更多
  1. Criteria 为条件查询

    Criterion 为条件

    通过Criteria的add即可将Criterion条件添加

  2. 方法说明

方法

说明

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用法.docx

    本篇将详细讲解`Restrictions`类的常用方法及其在数据查询中的应用。 1. `Restrictions.eq`: 这个方法用于创建一个等于(equal)的条件,例如`Restrictions.eq("fieldName", value)`会生成`fieldName = value`的...

    Restrictions用法.pdf

    2. `Restrictions.allEq`: 如果需要设置多个等于条件,可以使用`allEq`方法,它接受一个Map作为参数,Map的键是属性名,值是对应的比较值。例如,`allEq({"name": "John", "age": 25})`将匹配名字为John且年龄为25的...

    《Pro Oracle SQL》Chapter7--7.10GROUP BY Restrictions

    在7.10 GROUP BY Restrictions这一部分,作者深入探讨了在使用GROUP BY子句时的一些限制和注意事项,这对于理解和编写高效、正确的SQL查询至关重要。 1. GROUP BY基础:GROUP BY子句用于将数据集按照一个或多个列...

    DetachedCriteria Criteria 使用方法

    ### DetachedCriteria 使用详解 #### 一、背景与概述 在Web开发中,经常会遇到需要根据用户提供的...通过合理使用 `DetachedCriteria` 和 `Restrictions`,可以构建复杂且高效的查询逻辑,满足各种复杂的业务需求。

    hibernate criteria的使用方法

    ### Hibernate Criteria 使用方法详解 #### 一、简介 Hibernate 是一款非常流行的 Java 持久层框架,它简化了对象关系映射(ORM)过程中的许多复杂性。在 Hibernate 中,Criteria API 提供了一种类型安全的方式来...

    Hibernate中Criteria的用法

    在上面的代码中,我们首先创建了一个 Criteria 对象,然后使用 `Restrictions.like()` 方法创建了一个条件对象,最后使用 `add()` 方法将条件添加到 Criteria 对象中,并使用 `list()` 方法来获取查询结果。...

    Hibernate中Criteria的完整用法

    下面将详细介绍Criteria API的使用方法和相关知识点。 1. **Query By Example (QBE)**: QBE是一种通过实例对象创建查询的方式。例如,给定一个Student对象`s`,我们可以通过`cri.add(Example.create(s))`来创建一...

    Hibernate Criteria用法大全.docx

    【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...

    Quantum Complexity restrictions on algorithms and architectures 【PhD 】

    通过这一层次结构,作者重新审视了几个著名的基于数论的量子算法,并将其嵌入到量子计算的框架中,展示了一个使用仅能保持计算基矢不变的门来实现Shor算法的例子,该算法在初始化和读出时均采用Hadamard基矢。...

    Hibernate的Criteria用法

    要开始使用Criteria,你需要在Hibernate的Session中调用`createCriteria()`方法,传入你想查询的实体类的Class对象。例如,如果你要查询Person实体,你会这样做: ```java Criteria c = session.createCriteria...

    DetachedCriteria使用介绍

    - **多条件的 or 规则**:若要实现 OR 查询,需使用 `Restrictions.or()` 方法。例如:`searDc.add(Restrictions.or(Restrictions.eq("deptunid", "aa"), Restrictions.isNull("deptunid")));` 其中,`...

    Oracle_start_with_connect_by_prior_用法[文].pdf

    Oracle 连接查询的使用方法 Oracle 连接查询是指使用 START WITH 和 CONNECT BY 语句来实现递归查询的方法,这种方法可以生成树形结构的数据。在 Oracle 中,START WITH 语句用于指定递归查询的开始记录,而 ...

    Hibernate的Criteria用法总结.doc

    Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法,如 eq(等于)、ge(大于等于)、between 等来方法的创建 Criterion 查询条件(SimpleProjection 实例)。Example 的创建...

    java QBC常用方法

    `Restrictions.not(Restrictions.between())` 方法用于表示“不在...之间”的情况。 - **语法**:`Restrictions.not(Restrictions.between(String propertyName, Object fromValue, Object toValue))` - **示例**: ...

    Hibernate - DetachedCriteria 的完整用法

    如使用 `session.createCriteria(Class)` 方法来创建 Criteria 实例,然后使用 `add(Criterion criterion)` 方法来添加查询条件,最后使用 `list()` 方法来获取查询结果。 Hibernate 的 Criteria 和 ...

    Hibernate中Criteria的完整用法.docx

    本文将对 Hibernate 中 Criteria 的用法进行总结,涵盖 Criteria 和 DetachedCriteria 的差异、Criterion 和 Projection 的使用方法等。 Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供...

    New extensions to the sumsets with polynomial restrictions

    “多项式方法”是解决组合数学问题的技巧之一,它涉及构造和使用多项式来获得问题的下界或上界。多项式方法通常依赖于多项式的根、系数和次数的性质,可以帮助研究者推导出有关和集大小的数学约束条件。 在给出的...

    iOS-Restrictions-Cracker:破解iOS限制密码的多线程快速方法

    它可以使用不限数量的线程来完成此过程。 安装 apt包即将推出 从源编译 确保在计算机上安装了gcc(4.7或更高版本),make,openssl和openssl-dev(仅Linux,macOS请参见 。此问题将在以后的版本中修复) sudo apt ...

Global site tag (gtag.js) - Google Analytics