`
terry0501
  • 浏览: 313896 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Criterion 用法

阅读更多
方法
说明

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简介

    Criterion 的工作原理是将查询条件封装到一个 Criteria 对象中,然后使用 Session 的 createCriteria() 方法构建该对象。开发者可以使用 Criteria 的 add() 方法来添加查询条件,例如使用 Restrictions.eq() 方法来...

    hibernate_criterion.rar

    在这个例子中,我们创建了两个条件,然后使用`Restrictions.and()`方法将它们组合成一个"年龄大于等于18且状态为active"的查询条件。 最后,我们来谈谈Criterion的性能。由于Hibernate会将Criterion转换为SQL语句...

    Multi-Criterion Optimization

    文件中提到了多个学科分类号,如F.2, G.1.6, G.1.2, I.2.8等,这些分类号代表了论文集内容涉及的计算机科学领域,如计算逻辑、算法和数据结构、计算方法、人工智能等。这些分类有助于图书馆和研究人员对文献进行系统...

    Evolutionary Multi-Criterion Optimization

    1994年,Kalyanmoy Deb教授提出了NSGA(Non-dominated Sorting Genetic Algorithm),这是第一个被广泛接受和使用的进化多目标优化算法。随后,随着研究的深入和技术的进步,相继出现了多种改进版本,如NSGA-II、...

    论文研究-New Simple Early Stopping Criterion for LDPC Decoding Based on Variable-Node Message.pdf

    在LDPC码的译码过程中,通常使用迭代算法,即BP算法,这将涉及多次迭代直至找到正确的码字或达到最大迭代次数为止。每一次迭代都可能需要计算和更新所有变量节点和校验节点的信息。这个过程需要大量的计算资源和时间...

    使用make和criterion的CC++项目的项目设置工具。___.zip

    `Criterion`测试框架是针对C和C++的一个轻量级选择,它提供了一种结构化的断言方法和并发测试支持。它的设计目标是使编写测试尽可能简单,同时保持强大的功能。与传统的测试框架相比,`Criterion`提供了更好的错误...

    Hibernate中Criteria的完整用法.docx

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

    Hibernate Criteria用法大全.docx

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

    Hibernate - DetachedCriteria 的完整用法

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

    Hibernate的Criteria用法总结.doc

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

    Hibernate中Criteria的用法

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

    critcmp:用于比较Criterion运行的基准测试的命令行工具

    批判 用于比较Criterion运行的... 如果对Criterion内部格式进行了重大更改,则该项目将跟踪Criterion的最新版本,但是还将尝试在合理范围内继续使用较旧的版本。 例子 用法 除了提供作为位置参数的额外数据外,critcm

    奈奎斯特稳定判据Nyquist stability criterion

    总的来说,奈奎斯特稳定判据是评估控制系统稳定性的重要标准,结合拉普拉斯变换,为分析和设计复杂系统提供了强大而直观的方法。在现代自动控制理论中,这些工具仍然是理解和优化系统性能的关键。尽管多变量系统和更...

    Hibernate中Criteria的完整用法

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

    hibernate criteria的使用方法

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

    Entanglement detection beyond the CCNR criterion for infinite-dimensions

    要实现这个新的纠缠判据,需要使用到复杂数学和量子力学的知识,特别是关于Hilbert空间中的算子理论和矩阵分析。无限维Hilbert空间作为量子态的数学模型,为量子系统提供了一个连续无限的度量空间。Hilbert空间中的...

    Modal Assurance Criterion (MAC):该函数用于计算模态形状之间的模态保证准则 (MAC)-matlab开发

    Modal Assurance Criterion (MAC) 是一种在振动分析中常用的比较不同模态形状相似性的度量方法。它主要用于验证模态测试与仿真结果的一致性,或者比较不同实验条件下的模态数据。MAC 值范围在 0 到 1 之间,其中 1 ...

Global site tag (gtag.js) - Google Analytics