学习下Hibernate的Criteria
原文地址: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`类的常用方法及其在数据查询中的应用。 1. `Restrictions.eq`: 这个方法用于创建一个等于(equal)的条件,例如`Restrictions.eq("fieldName", value)`会生成`fieldName = value`的...
2. `Restrictions.allEq`: 如果需要设置多个等于条件,可以使用`allEq`方法,它接受一个Map作为参数,Map的键是属性名,值是对应的比较值。例如,`allEq({"name": "John", "age": 25})`将匹配名字为John且年龄为25的...
在7.10 GROUP BY Restrictions这一部分,作者深入探讨了在使用GROUP BY子句时的一些限制和注意事项,这对于理解和编写高效、正确的SQL查询至关重要。 1. GROUP BY基础:GROUP BY子句用于将数据集按照一个或多个列...
### DetachedCriteria 使用详解 #### 一、背景与概述 在Web开发中,经常会遇到需要根据用户提供的...通过合理使用 `DetachedCriteria` 和 `Restrictions`,可以构建复杂且高效的查询逻辑,满足各种复杂的业务需求。
### Hibernate Criteria 使用方法详解 #### 一、简介 Hibernate 是一款非常流行的 Java 持久层框架,它简化了对象关系映射(ORM)过程中的许多复杂性。在 Hibernate 中,Criteria API 提供了一种类型安全的方式来...
在上面的代码中,我们首先创建了一个 Criteria 对象,然后使用 `Restrictions.like()` 方法创建了一个条件对象,最后使用 `add()` 方法将条件添加到 Criteria 对象中,并使用 `list()` 方法来获取查询结果。...
下面将详细介绍Criteria API的使用方法和相关知识点。 1. **Query By Example (QBE)**: QBE是一种通过实例对象创建查询的方式。例如,给定一个Student对象`s`,我们可以通过`cri.add(Example.create(s))`来创建一...
【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...
通过这一层次结构,作者重新审视了几个著名的基于数论的量子算法,并将其嵌入到量子计算的框架中,展示了一个使用仅能保持计算基矢不变的门来实现Shor算法的例子,该算法在初始化和读出时均采用Hadamard基矢。...
要开始使用Criteria,你需要在Hibernate的Session中调用`createCriteria()`方法,传入你想查询的实体类的Class对象。例如,如果你要查询Person实体,你会这样做: ```java Criteria c = session.createCriteria...
- **多条件的 or 规则**:若要实现 OR 查询,需使用 `Restrictions.or()` 方法。例如:`searDc.add(Restrictions.or(Restrictions.eq("deptunid", "aa"), Restrictions.isNull("deptunid")));` 其中,`...
Oracle 连接查询的使用方法 Oracle 连接查询是指使用 START WITH 和 CONNECT BY 语句来实现递归查询的方法,这种方法可以生成树形结构的数据。在 Oracle 中,START WITH 语句用于指定递归查询的开始记录,而 ...
Criterion 的实例可以通过 Restrictions 工具类来创建,Restrictions 提供了大量的静态方法,如 eq(等于)、ge(大于等于)、between 等来方法的创建 Criterion 查询条件(SimpleProjection 实例)。Example 的创建...
`Restrictions.not(Restrictions.between())` 方法用于表示“不在...之间”的情况。 - **语法**:`Restrictions.not(Restrictions.between(String propertyName, Object fromValue, Object toValue))` - **示例**: ...
如使用 `session.createCriteria(Class)` 方法来创建 Criteria 实例,然后使用 `add(Criterion criterion)` 方法来添加查询条件,最后使用 `list()` 方法来获取查询结果。 Hibernate 的 Criteria 和 ...
本文将对 Hibernate 中 Criteria 的用法进行总结,涵盖 Criteria 和 DetachedCriteria 的差异、Criterion 和 Projection 的使用方法等。 Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供...
“多项式方法”是解决组合数学问题的技巧之一,它涉及构造和使用多项式来获得问题的下界或上界。多项式方法通常依赖于多项式的根、系数和次数的性质,可以帮助研究者推导出有关和集大小的数学约束条件。 在给出的...
它可以使用不限数量的线程来完成此过程。 安装 apt包即将推出 从源编译 确保在计算机上安装了gcc(4.7或更高版本),make,openssl和openssl-dev(仅Linux,macOS请参见 。此问题将在以后的版本中修复) sudo apt ...