`
henghengdh
  • 浏览: 157494 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Restrictions方法说明

阅读更多
关于Restrictions方法的说明,网上大部分不全,在此慢慢补全:
方法说明
方法
说明

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子句,闭区间xy中的任意值

Restrictions.like --> 对应SQL的LIKE子句

Restrictions.in --> 对应SQL的in子句

Restrictions.and --> and 关系

Restrictions.or --> or 关系

Restrictions.isNull --> 判断属性是否为空,为空则返回true

Restrictions.isNotNull --> 与isNull相反

Restrictions.sqlRestriction --> SQL限定的查询


Restrictions.not--> 传入qbe对象
criteria.add(Restrictions.not(Restrictions.eq("prodTypeId", prodTypeId)));

Restrictions.conjunction()-->逻辑与
Restrictions.disjunction()-->逻辑或

======================================================================
Restrictions.naturalId()-->对大多数查询,包括条件查询而言,因为查询缓存的失效(invalidation)发生得太频繁,查询缓存不是非常高效。然而,有一种特别的查询,可以通过不变的自然键优化缓存的失效算法。在某些应用中,这种类型的查询比较常见。条件查询API对这种用例提供了特别规约。

首先,你应该对你的entity使用<natural-id>来映射自然键,然后打开第二级缓存。

<class name="User">
   <cache usage="read-write"/>
   <id name="id">
       <generator class="increment"/>
   </id>
   <natural-id>
       <property name="name"/>
       <property name="org"/>
   </natural-id>
   <property name="password"/>
</class>
注意,此功能对具有mutable自然键的entity并不适用。

然后,打开Hibernate 查询缓存。

现在,我们可以用Restrictions.naturalId()来使用更加高效的缓存算法。

session.createCriteria(User.class)
   .add( Restrictions.naturalId()
       .set("name", "gavin")
       .set("org", "hb")
   ).setCacheable(true)
   .uniqueResult();
======================================================================

======================================================================

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();

分享到:
评论

相关推荐

    New extensions to the sumsets with polynomial restrictions

    该引理说明,如果一个非零多项式在一组有限子集的笛卡尔积中非零,那么至少存在一个元素组合使得该多项式在这些元素上的值不为零。这个引理能够导出许多关于受限制和集的研究成果,并且为利用多项式方法寻找各种受...

    DetachedCriteria使用介绍

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

    Hibernate的Criteria用法

    以下是对Criteria用法的详细说明: 1. **创建Criteria实例**: 要开始使用Criteria,你需要在Hibernate的Session中调用`createCriteria()`方法,传入你想查询的实体类的Class对象。例如,如果你要查询Person实体,...

    Hibernate 参数查询通用方法

    以下是对这两种方法的详细说明: 1. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,语法类似于SQL,但操作的对象是持久化类而非表。在进行参数查询时,我们可以使用`...

    InheritanceAndPolymorphism

    9. **访问限制(Access Restrictions)**: 只有公有(public)或受保护的(protected)方法可以被子类覆盖。私有(private)方法不能被子类直接访问,因此不能被覆盖。 综上所述,继承和多态提供了强大的代码组织...

    Win8安装蓝牙驱动遇到“拒绝访问”问题的解决方法.docx

    在注册表编辑器中,我们可以通过搜索功能,搜索“Restrictions”或“COD Major 05 Minor10”等内容,从而找到准确位置。然后,修改注册表项的权限,使得驱动程序可以写入注册表项,从而解决“拒绝访问”问题。

    Altera Clock配置说明

    - **VHDL Component Declaration:** 介绍了VHDL语言中此Megafunction的组件声明方法。 综上所述,Altera Clock Control Block (ALTCLKCTRL) Megafunction是一款功能强大的时钟控制模块,它不仅支持全局时钟管理,...

    Printronix普印力集成网络接口卡用户手册.pdf

    普印力集成网络接口卡用户手册是 Printronix 公司出品的一款集成网络接口卡的用户手册,该手册详细介绍了该产品的使用说明、安装方法、配置设置和故障排除等内容。 知识点: 1. Software License Agreement:软体...

    在家办公不再难——利用“向日葵”远程控制软件实现从外网接入教育专网整理.pdf

    为解决这个问题,本文提出了一种利用“向日葵”远程控制软件来实现从家中的计算机接入教育专网的方法。 首先,本文讨论了教育专网的特点和 Restrictions,以及外网计算机连接教育专网的难点。然后,本文介绍了...

    Hibernate说明文档.rar_ajax_hibernate

    criteria.add(Restrictions.eq("id", userId)); User user = (User) criteria.uniqueResult(); ``` ### 5. Ajax与Hibernate整合 Ajax(异步JavaScript和XML)允许在不刷新整个页面的情况下更新部分Web内容。在...

    留言板代码定义.pdf

    以下是相关知识点的详细说明: 1. **Struts2框架**: Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,用于简化开发过程。在给定的代码中,`LeaveAction`类继承了`ActionSupport`...

    java上万个实例源代码例子 链接搜集

    - **说明**: 当需要组合多个逻辑条件时,可以使用`Restrictions.Disjunction`。 ##### (10) 排序操作 - **链接**: `http://www.java2java.com/CN/Tutorial/Java/0350__Hibernate/HSQLOrderByAscendingOrder.htm` - ...

    hibernate学习笔记定义.pdf

    最后,文档通过“Employee----Department”关系的说明,演示了Hibernate如何处理对象之间的关联映射,包括如何通过Hibernate.initialize()方法初始化代理对象的关联属性。这是一个重要知识点,它解决了在懒加载中...

    Guitar Practicing Secrets

    这说明了书中可能包含了定制化的练习方法,以满足不同水平的吉他手,从初学者到高级演奏者。 6. 提到的吉他速度练习策略强调了先进行手指热身,这说明了手指灵活度和关节的准备对于练习效果的重要性。使用节拍器来...

    (3.0版本)自己写的struts2+hibernate+spring实例

    criteria.add(Restrictions.sqlRestriction("MENUITEM_ID in(select a.MENUITEM_ID from Wuxin_MENUITEM a connect by prior a.MENUITEM_ID = a.PARENT_ID"+ " start with a.MENUITEM_ID = '"+parentId+"')" )); ...

    Hello,Android 2nd

    - **版权说明**:本书使用了一些由Google创作并共享的作品,这些作品按照Creative Commons 2.5 Attribution License的条款使用。更多详情可参考[http://code.google.com/policies.html#restrictions]...

    Hibernate API文档.rar

    《Hibernate API文档》是Java开发领域中不可或缺的参考资料,它为开发者提供了详尽的Hibernate框架接口和类的说明。Hibernate是一个强大的对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互,通过将Java...

    Hibernate教程21_HIbernate查询

    1. **s2sh_relation20_HQL.zip**: 包含了关于HQL查询的示例代码和说明,可以帮助你掌握基本的HQL语法和使用方法。 2. **s2sh_relation21_QBC.zip**: 提供了Query by Criteria的实践案例,通过解压和运行这些代码,你...

    MySQL开发助手英文版

    - **Restrictions and Limitations**:列举了MySQL使用过程中可能会遇到的限制和注意事项。 - **其他功能**: - **Precision Math**:关于MySQL精确数学计算的支持。 - **Spatial Extensions**:介绍了空间数据...

Global site tag (gtag.js) - Google Analytics