`
WessonGao
  • 浏览: 28552 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

QBC用法总结

 
阅读更多
粘贴文章一篇:http://www.cnblogs.com/danica/archive/2011/08/04/2127867.html


方法                          说明
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限定查询

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;

分享到:
评论

相关推荐

    QBC的各种查询

    总结起来,QBC是Hibernate中一种强大的查询工具,它为Java开发者提供了一种面向对象的查询方式,使得在MVC架构下处理数据查询变得更为简便。通过对QBC的深入理解和熟练运用,我们可以提升项目的可维护性和开发效率。

    qbc表达式

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

    QBC查询的别名方的

    根据提供的文件信息,我们可以推断出此文档主要讨论了QBC(Query By Criteria)查询方法在Hibernate框架中的应用。下面将对文档中的几个关键点进行详细的解析与扩展。 ### QBC查询简介 QBC(Query By Criteria)是...

    Hibernate_QBC和Hibernate_QBE

    总结来说,QBC和QBE是Hibernate提供的两种实用查询方式,分别适合不同的场景。QBC适用于需要动态构建查询条件的场合,而QBE则在简单查询中表现出其易用性。理解和掌握这两种查询方式,对于提升Hibernate开发效率和...

    HQL与QBC的查询条件.doc

    总结起来,HQL和QBC是Hibernate提供的两种不同的查询手段,它们各自有其特点和适用场合。理解并熟练掌握这两种查询条件的使用,能够极大地提高开发效率,使得在处理数据库操作时更加游刃有余。在实际项目中,根据...

    Java_Hibernate QBC条件查询对比

    总结来说,Java_Hibernate中的QBC和HQL各有优势和适用场景。QBC适合于快速实现简单的查询,而HQL则更适合处理复杂的查询逻辑。开发者应根据项目需求灵活选择,并结合Criteria API以提高代码的可读性和可维护性。在...

    DetachedCriteria Criteria 使用方法

    ### DetachedCriteria 使用详解 #### 一、背景与概述 在Web开发中,经常会遇到需要根据用户提供的条件进行动态查询的需求。例如,在社交平台中,用户可以设置多种筛选条件来进行高级搜索,这时就需要动态生成SQL...

    Hibernate中Criteria的完整用法

    下面将详细介绍Criteria API的使用方法和相关知识点。 1. **Query By Example (QBE)**: QBE是一种通过实例对象创建查询的方式。例如,给定一个Student对象`s`,我们可以通过`cri.add(Example.create(s))`来创建一...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式  2.3.1 主动域对象模式  2.3.2 JDO模式  2.3.3 CMP模式  2.4 Hibernate API简介  2.4.1 Hibernate的核心接口  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式  2.3.1 主动域对象模式  2.3.2 JDO模式  2.3.3 CMP模式  2.4 Hibernate API简介  2.4.1 Hibernate的核心接口  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式  2.3.1 主动域对象模式  2.3.2 JDO模式  2.3.3 CMP模式  2.4 Hibernate API简介  2.4.1 Hibernate的核心接口  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式  2.3.1 主动域对象模式  2.3.2 JDO模式  2.3.3 CMP模式  2.4 Hibernate API简介  2.4.1 Hibernate的核心接口  ...

    4.Hibernate-04查询以及优化策略1

    在上面的代码中,我们使用 `createCriteria` 方法创建了一个 QBC 查询对象,该对象将根据 `Order` 对象的属性和条件来查询数据库中的数据。 三、SQL 查询 SQL 查询是 Hibernate 提供的一种查询方式,它可以根据 ...

    Hibernate的查询方式

    2. 设置查询条件:使用Criteria对象的`add()`方法添加各种查询条件,如`eq()`(等于)、`gt()`(大于)等。 3. 执行查询:调用`list()`或`uniqueResult()`等方法执行查询。 QBC查询方式的一个显著优点是其类型的...

    Java Web程序设计教程

    4.1.3sql使用方法 65 4.2jdbc 67 4.2.1jdbc概述 67 4.2.2jdbc驱动程序 68 4.2.3使用jdbc读取数据 69 4.3项目实战——存储图书信息 73 本章小结 78 课后练习 79 第5章struts2框架基础 80 5.1mvc框架 80 ...

    spring-boot基于hibernate实现简单分页

    在本文中,我们将深入探讨如何使用Spring Boot与Hibernate框架实现简单的分页功能。Spring Boot以其简洁的配置和快速的应用开发而受到广泛欢迎,而Hibernate作为Java领域中的一个强大的ORM(对象关系映射)工具,...

    Hibernate的检索方式

    ### 小结 以上介绍了Hibernate的五种检索方式:导航对象图检索、OID检索、HQL检索、QBC检索以及本地SQL检索。每种检索方式都有其独特的应用场景和特点。在实际开发过程中,根据项目的需求和技术背景选择合适的检索...

    hibernate查询方法

    以下是一个使用QBC的例子: ```java User user = new User(); user.setUsername("testUser"); List&lt;User&gt; users = session.createCriteria(User.class).add(Example.create(user)).list(); ``` 在这里,我们创建了...

    java之hibernate和spring技术难点及其要点总结

    3. **`createSQLQuery` 的用法**:该方法允许开发者直接执行原生SQL语句,同时提供了一种灵活的方式来映射查询结果到Java对象。 4. **HQL返回结果类型**:HQL支持多种结果类型的返回,如List、Array、Map等,这使得...

Global site tag (gtag.js) - Google Analytics