[转:http://chenlinbo.iteye.com/blog/335677]
QBC
查询:
通过使用
Hibernate
提供的
Query By Criteria API
来查询对象,这种
API
封装了
SQL
语句的动态拼装,对查询提供了更加面向对象的功能接口。我们看下面的示例程序:
Criteria criteria=session.createCriteria(User.class);
criteria.add(Expression.eq(“name”,”zx”));
criteria.add(Expression.eq(“age”,new Integer(27));
List list=criteria.list();
当执行
criteria.list()
时会生成类似这样的
SQL
语句:
Select * from user where name=’zx’ and age=27;
所以在这里我们可以看出,
Criteria
实际上是一个查询容器,它对查询条件表达式的添加进行了封装,具体的查询条件是通过
add()
方法添加的,而且具体的查询条件的表达式运算是通过
Expression
指定的。
Hibernate
在运行期会根据
Criteria
指定的表达式条件来添加查询条件,并且生成查询语句。这种方式非常符合
Java
以及所有面向对象编程语言的编程方式,所以大多数的持久层框架都提供了对这种方式查询的支持。
下表列出了
Expression
所有的方法,以及每个方法所对应的查询表达式及其限制。
方法
|
描述
|
Expression.eq
|
对应
SQL
的
“field=value”
表达式
如:
Expression.eq(“name”,”zx”);
|
Expression.allEq
|
方法的参数为一个
Map
类型对象,包含多个名
/
值对对应关系,相当于多个
Expression.eq
的叠加
|
Expression.gt
|
对应
SQL
的
“field>value”
表达式
|
Expression.ge
|
对应
SQL
的
“field>=value”
表达式
|
Expression.lt
|
对应
SQL
的
“field
<value
”
表达式
|
Expression.le
|
对应
SQL
的
“field<=value”
表达式
|
Expression.between
|
对应
SQL
语句的
between
表达式,如:查询年龄在
21
与
27
岁之间的用户,可以写成
Expression.between(“age”,new Integer(21),new Integer(27));
|
Expression.like
|
对应
SQL
语句的
”field like value”
表达式
|
Expression.in
|
对应
SQL
语句的
“field in(……)”
表达式
|
Expression.eqProperty
|
用于比较两个属性值,对应
”field=field”SQL
表达式
|
Expression.gtProperty
|
用于比较两个属性值,对应
”field>field”SQL
表达式
|
Expression.geProperty
|
用于比较两个属性值,对应
”field>=field”SQL
表达式
|
Expression.ltProperty
|
用于比较两个属性值,对应
”field
<
field
表达式
|
Expression.leProperty
|
用于比较两个属性值,对应
”field<=field”SQL
表达式
|
Expression.and
|
对应
SQL
语句的
And
关系组合,如:
Expression.and(Expression.eq(“name”,”zx”),Expression.eq(“sex”,”1”));
|
Expression.or
|
对应
SQL
语句的
Or
关系组合,如:
Expression.or(Expression.eq(“name”,”zx”),Expression.eq(“name”,”zhaoxin”));
|
Expression.sql
|
作为补充这个方法提供了原生
SQL
语句查询的支持,在执行时直接通过原生
SQL
语句进行限定,如:
Expression.sql(“lower({alias}.name) like (?)”,“zhao%”,Hibernate.STRING) ;
在运行时
{ alias }
将会由当前查询所关联的实体类名替换,
()
中的
?
将会由
”zhao%”
替换,并且类型由
Hibernate.STRING
指定。
|
注意:
Expression
各方法中的属性参数(各方法中的第一个参数)所指定的属性名称(如:
name,sex
),并不是数据库表中的实际字段名称,而是实体对象中映射实际数据表字段的类属性名称。
分享到:
相关推荐
标题"Hibernate_QBC和Hibernate_QBE"提及了两个关于Hibernate的查询方式,即Query By Criteria(QBC)和Query By Example(QBE)。Hibernate是Java领域中一个广泛使用的对象关系映射(ORM)框架,它允许开发者以面向...
本资源“Hibernate QBC高级查询”聚焦于Hibernate Query by Criteria(QBC)的高级用法,旨在帮助开发者深入理解并熟练运用这一强大的查询机制。 Query by Criteria是Hibernate提供的另一种查询方式,与HQL...
Hibernate QBC(Query By Criteria)查询是Hibernate框架中一种面向对象的查询方式,它通过提供Criteria API使得开发者能够更方便地构建和执行SQL查询。QBC查询的优势在于它允许程序员用更加面向对象的方式处理...
1. **标准查询简介(QBC:Query By Criteria)** Criteria API 的核心在于`Criteria`对象,它是通过`Session`的`createCriteria()`方法创建的。以下是一个简单的例子,查询所有`Employee`类的实例: ```java ...
在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以编程方式构建查询,而不是直接写SQL语句。下面将详细解释Criteria API的使用及其相关概念。 1. Query By Example ...
同时,Hibernate还提供了Criteria API,它是QBC的一部分,提供了更多的动态查询功能,可以组合多个条件,甚至可以与DetachedCriteria结合,实现更复杂的查询逻辑。 总结来说,Java_Hibernate中的QBC和HQL各有优势和...
Hibernate QBC(Query By Criteria)查询是Criteria查询的另一种表达方式,其本质与Criteria查询相同,都是通过构建对象化的查询条件执行SQL。在QBC中,`Expression`类的角色被`Restrictions`类取代,但工作方式类似...
本篇将详细介绍如何使用Hibernate的Query By Criteria (QBC)方式进行分页查询。 首先,我们需要了解QBC的基本概念。QBC是Hibernate提供的一种基于对象的查询方式,与HQL(Hibernate Query Language)类似,但更接近...
Criteria 查询机制主要包括 QBE(Query By Example)、QBC(Query By Criteria)和 HQL(Hibernate Query Language)三种方式。 QBE(Query By Example) QBE 是一种基于示例的查询机制,它可以根据一个示例对象来...
在Java的持久化框架Hibernate中,Criteria API提供了一种动态构造SQL查询的方式,它允许开发者在运行时构建灵活的查询,而无需预先编写HQL(Hibernate Query Language)语句。Criteria API提供了丰富的功能,包括...
标题中的“Hibernate-HQL-QBC-QBE”涵盖了四个重要的Java持久化框架Hibernate中的概念,分别是Hibernate Query Language(HQL)、Query By Criteria(QBC)、Query By Example(QBE)以及相关的库文件。以下是对这些...
本教程将深入探讨Hibernate中的两种查询方式:HQL(Hibernate Query Language)和QBC(Query By Example)。通过实例开发,我们将了解这两种查询方法的使用和它们之间的差异。 首先,HQL是Hibernate专门设计的一种...
QBC,全称为Query By Criteria,是Java世界中一种基于对象的查询方式,主要用于简化Hibernate框架中的数据查询操作。QBC提供了一种面向对象的方式来构建查询条件,与SQL语句相比,它更易于理解和维护,尤其在处理...
综上所述,QBC查询是Hibernate中一种强大的动态查询工具,通过Criteria API,我们可以构建出各种复杂查询,同时保持代码的简洁性和可维护性。熟练掌握QBC,能极大地提升开发效率,尤其在处理不确定的查询条件时。在...
在Java的Hibernate框架中,Criteria API提供了一种用于动态构建查询的方法,它是Query By Criteria(QBC)查询方式的一部分。这种方式允许开发者避开编写HQL(Hibernate Query Language)语句,而是通过API调用来...
根据提供的文件信息,我们可以推断出此文档主要讨论了QBC(Query By Criteria)查询方法在Hibernate框架中的应用。下面将对文档中的几个关键点进行详细的解析与扩展。 ### QBC查询简介 QBC(Query By Criteria)是...
为了实现动态SQL,我们可以借助于Hibernate的QBC(Query By Criteria)和Criteria API,或者使用第三方库如MyBatis的动态SQL功能。本文主要讨论使用XML配置和FREEMARKER的方法。 四、XML配置SQL 在Hibernate中,...
Hibernate提供了三种主要的查询方式:SQL、HQL(Hibernate Query Language)和QBC(Query by Criteria)。 1. SQL查询: Hibernate支持直接执行SQL语句,这使得开发者可以充分利用数据库的特性和性能。通过`...