`

总结:Hibernate Restrictions 用法

阅读更多

QBC常用限定方法

Restrictions .eq   --> equal,等于.

Restrictions .ne   --> not 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;

分享到:
评论

相关推荐

    Hibernate Criteria用法大全.docx

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

    hibernate 数据库操作方法

    Hibernate是Java领域中一款强大的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。在Java应用中,尤其是Spring框架与Hibernate结合使用时,能够实现更高效的业务...

    Hibernate的Criteria用法总结.doc

    Hibernate 的 Criteria 用法总结 Hibernate 的 Criteria 是一个完全面向对象、可扩展的条件查询 API,通过它完全不需要考虑数据库底层如何实现、SQL 语句如何实现。Criteria 提供了灵活的查询条件组装方式,能够...

    Hibernate的Criteria用法总结

    在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...

    hibernate入门简单实例

    这个“hibernate_first”压缩包提供了一个适合初学者的简单实例,帮助理解Hibernate的基础用法。以下是关于Hibernate入门的一些关键知识点: 1. **对象关系映射(ORM)**:ORM是将数据库中的表映射为Java类的过程,...

    hibernate用法

    ### Hibernate 使用详解 #### 一、配置与连接 在配置Hibernate的过程中,有几个关键点非常重要,这些设置...以上介绍了一些基本的配置项、核心概念和常用操作方法,希望能够帮助开发者更好地理解和使用Hibernate。

    Hibernate的Criteria用法

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

    Hibernate API文档.rar

    9. **持久化代理**:Hibernate使用透明代理机制,当访问一个持久化对象时,如果该对象尚未加载,Hibernate会自动从数据库中获取。这提升了程序的灵活性,同时也降低了对内存的需求。 10. **多态性支持**:Hibernate...

    Restrictions用法.pdf

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

    夏昕《Hibernate开发指南》V3.0.4

    《Hibernate 开发指南》是一本非常适合初学者学习 Hibernate 的书籍,它不仅详细介绍了 Hibernate 的基本概念和使用方法,还通过丰富的示例帮助读者快速上手。无论是对于刚接触 ORM 技术的新手,还是想要深入了解 ...

    Restrictions用法.docx

    综上所述,`Restrictions`类提供了丰富的条件构造方法,使得在Hibernate中构建Criteria查询变得简单直观,同时也方便了对复杂查询逻辑的管理。通过熟练掌握这些方法,开发者可以更好地实现数据的筛选、排序和过滤。

    Hibernate生产SQL语句

    总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...

    qbc表达式

    本文将重点介绍QBC方法中的比较运算符及其具体用法,帮助读者更好地理解和运用这些运算符来实现复杂的查询需求。 #### 一、什么是QBC QBC是Hibernate框架提供的一个高级查询接口,允许开发者通过编程的方式构造...

    hibernate criteria的使用方法

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

    Hibernate3.x总结

    ### Hibernate3.x总结 #### 一、概述与配置 Hibernate 是一个开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 应用程序中的对象映射到数据库表及其字段上,从而简化了数据访问层的开发工作。本节主要介绍 ...

    hibernate的多态查询

    5. **多态查询的实现**:Hibernate支持使用`DetachedCriteria`或`Criteria` API来进行多态查询,通过`createCriteria()`方法指定父类,并使用`add(Restrictions.in("property", values))`等方法来限制查询条件。...

    Hibernate查询解决方案

    本文详细介绍了 Hibernate 提供的各种查询方式,包括 `load`、`get`、`createQuery` 和 `find` 等方法,并重点阐述了 HQL 查询的基本用法和高级技巧。通过本文的学习,读者可以掌握 Hibernate 的基本查询操作,并能...

    Hibernate三大类查询总结

    此外,Hibernate允许我们直接使用SQL表达式,如通过`Restrictions.sql()`方法实现,但需要注意的是,`{alias}`需要替换为查询实体的列别名。 ```java List&lt;Cat&gt; cats = sess.createCriteria(Cat.class) .add...

    Hibernate criteria基本操作

    使用 `Restrictions.or()` 方法组合多个条件: ```java Criterion crit1 = Restrictions.or(Restrictions.eq("name", "刘伟"), Restrictions.between("id", 100, 1000)); ``` 7. 原生 SQL 语句: 虽然不推荐,...

    hibernate学习学习

    - 插入、更新、删除:使用Session的save(), update(), delete()方法操作对象状态。 5. **查询** - HQL:类似SQL,但操作的是对象,例如`from User where username='admin'`。 - Criteria API:动态构建查询条件...

Global site tag (gtag.js) - Google Analytics