方法
说明
Restrictions.eq
=
Restrictions.allEq
利用Map来进行多个等于的限制
Restrictions.gt
>
Restrictions.ge
>=
Restrictions.lt
<
Restrictions.le
<=
Restrictions.ne
<>
Restrictions.between
BETWEEN
Restrictions.like
LIKE
Restrictions.in
in
Restrictions.and
and
Restrictions.or
or
Restrictions.sqlRestriction
用SQL限定查询
有空再添加上,代码示例。
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;
分享到:
相关推荐
Criterion 的工作原理是将查询条件封装到一个 Criteria 对象中,然后使用 Session 的 createCriteria() 方法构建该对象。开发者可以使用 Criteria 的 add() 方法来添加查询条件,例如使用 Restrictions.eq() 方法来...
在这个例子中,我们创建了两个条件,然后使用`Restrictions.and()`方法将它们组合成一个"年龄大于等于18且状态为active"的查询条件。 最后,我们来谈谈Criterion的性能。由于Hibernate会将Criterion转换为SQL语句...
文件中提到了多个学科分类号,如F.2, G.1.6, G.1.2, I.2.8等,这些分类号代表了论文集内容涉及的计算机科学领域,如计算逻辑、算法和数据结构、计算方法、人工智能等。这些分类有助于图书馆和研究人员对文献进行系统...
1994年,Kalyanmoy Deb教授提出了NSGA(Non-dominated Sorting Genetic Algorithm),这是第一个被广泛接受和使用的进化多目标优化算法。随后,随着研究的深入和技术的进步,相继出现了多种改进版本,如NSGA-II、...
在LDPC码的译码过程中,通常使用迭代算法,即BP算法,这将涉及多次迭代直至找到正确的码字或达到最大迭代次数为止。每一次迭代都可能需要计算和更新所有变量节点和校验节点的信息。这个过程需要大量的计算资源和时间...
`Criterion`测试框架是针对C和C++的一个轻量级选择,它提供了一种结构化的断言方法和并发测试支持。它的设计目标是使编写测试尽可能简单,同时保持强大的功能。与传统的测试框架相比,`Criterion`提供了更好的错误...
本文将对 Hibernate 中 Criteria 的用法进行总结,涵盖 Criteria 和 DetachedCriteria 的差异、Criterion 和 Projection 的使用方法等。 Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供...
【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...
如使用 `session.createCriteria(Class)` 方法来创建 Criteria 实例,然后使用 `add(Criterion criterion)` 方法来添加查询条件,最后使用 `list()` 方法来获取查询结果。 Hibernate 的 Criteria 和 ...
Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法,如 eq(等于)、ge(大于等于)、between 等来方法的创建 Criterion 查询条件(SimpleProjection 实例)。Example 的创建...
在上面的代码中,我们首先创建了一个 Criteria 对象,然后使用 `Restrictions.like()` 方法创建了一个条件对象,最后使用 `add()` 方法将条件添加到 Criteria 对象中,并使用 `list()` 方法来获取查询结果。...
批判 用于比较Criterion运行的... 如果对Criterion内部格式进行了重大更改,则该项目将跟踪Criterion的最新版本,但是还将尝试在合理范围内继续使用较旧的版本。 例子 用法 除了提供作为位置参数的额外数据外,critcm
总的来说,奈奎斯特稳定判据是评估控制系统稳定性的重要标准,结合拉普拉斯变换,为分析和设计复杂系统提供了强大而直观的方法。在现代自动控制理论中,这些工具仍然是理解和优化系统性能的关键。尽管多变量系统和更...
Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法,如 eq(等于)、ge(大于等于)、between 等来方法的创建 Criterion 查询条件(SimpleExpression 实例)。除此之外,...
### Hibernate Criteria 使用方法详解 #### 一、简介 Hibernate 是一款非常流行的 Java 持久层框架,它简化了对象关系映射(ORM)过程中的许多复杂性。在 Hibernate 中,Criteria API 提供了一种类型安全的方式来...
要实现这个新的纠缠判据,需要使用到复杂数学和量子力学的知识,特别是关于Hilbert空间中的算子理论和矩阵分析。无限维Hilbert空间作为量子态的数学模型,为量子系统提供了一个连续无限的度量空间。Hilbert空间中的...
Modal Assurance Criterion (MAC) 是一种在振动分析中常用的比较不同模态形状相似性的度量方法。它主要用于验证模态测试与仿真结果的一致性,或者比较不同实验条件下的模态数据。MAC 值范围在 0 到 1 之间,其中 1 ...