在hibernate的Session里面使用createCriteria可以创建一个Criteria实例帮助我们进行条件查询,不用自己串hql语句,很方便。
用法很简单,首先传Class实例创建Criteria,Class实例对应你想要查询的那个实体:
Criteria c = session.createCriteria(Person.class);
然后调用Criteria的add方法加入条件(Restrictions)。常用的条件有:
方法
|
說明
|
Restrictions.eq
|
等於
|
Restrictions.allEq
|
使用Map,使用key/value進行多個等於的比對
|
Restrictions.gt
|
大於 >
|
Restrictions.ge
|
大於等於 >=
|
Restrictions.lt
|
小於 <
|
Restrictions.le
|
小於等於 <=
|
Restrictions.between
|
對應SQL的BETWEEN子句
|
Restrictions.like
|
對應SQL的LIKE子句
|
Restrictions.in
|
對應SQL的in子句
|
Restrictions.and
|
and關係
|
Restrictions.or
|
or關係
|
Restrictions.sqlRestriction
|
SQL限定查詢
|
例如,我想返回Person实体里面年龄(age)大于20的记录,那么就为Criteria加入Restrictions.gt条件:
List list = c.add(Restrictions.gt(“age”,new Integer(20))).list();
Restrictions.and和Restrictions.or很有用,表示and查询还是or查询,例如我要查询Person实体里面年龄(age)大于20,或者性别 (sex)为man
的记录,那么就为Criteria加入:
List list = c.add(Restrictions.or(
Restrictions.gt(“age”,new Integer(20)),
Restrictions.eq(“sex”,”man”)
)).list();
如果需要关联查询的话,可以使用Criteria的createCriteria方法创建一个Criteria,例如部门(Department)和人员(Person)是一对多的关系,我要查询Person实体里面年龄(age)大于20,性别 (sex)为man,
备注包含应届生,
且所在部门(department)是开发部的记录:
List list = c.add(Restrictions.gt(“age”,new Integer(20)))
.add(Restrictions.eq(“sex”,”man”))
.add(Restrictions.like(“Memo”,”%应届生%”))
.createCriteria(“department”)
.add(Restrictions.eq(“departmentname”,”开发部”))
.list();
其他条件的用法也很简单,就不列举了。
另外,Hibernate3出了一个org.hibernate.criterion.DetachedCriteria,即离线Criteria,它允许你可以先创建DetachedCriteria,然后传到Session里面才真正返回一个Criteria,用法如下:
// 先建立DetchedCriteria物件 DetachedCriteria detchedCriteria = DetachedCriteria.forClass(Person.class); // 加入查詢條件 detchedCriteria.add(Restrictions.ge("age",new Integer(25))); Session session = sessionFactory.openSession(); // 綁定Session並返回一個Criteria實例 Criteria criteria = detchedCriteria.getExecutableCriteria(session); List list = criteria.list();
|
最后,需要注意,Criteria还提供了setFirstResult和setMaxResults方法进行分页查询。
分享到:
相关推荐
在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...
这段代码首先通过`getSession()` 方法获取一个`Session` 对象,然后使用`createCriteria()` 方法创建一个针对`Books` 类的`Criteria` 实例。最后,通过`list()` 方法执行查询并获取所有书籍的数据。 #### 四、条件...
使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。Criteria crit = session.createCriteria(User.class); crit.add(Restrictions.eq("name", "John")); List...
Hibernate Criteria 是一种在Java应用程序中使用Hibernate ORM框架执行SQL查询的方式。它提供了一种面向对象的方式来构建查询,使得代码更加可读和易于维护。Criteria API 提供了多种方法来构建复杂的查询,包括添加...
### Hibernate Criteria 使用方法详解 #### 一、简介 Hibernate 是一款非常流行的 Java 持久层框架,它简化了对象关系映射(ORM)过程中的许多复杂性。在 Hibernate 中,Criteria API 提供了一种类型安全的方式来...
本文将围绕给定的代码片段,深入探讨Hibernate Criteria API中排序功能的使用方法与注意事项。 #### 二、基础知识回顾 在开始之前,我们先简单回顾一下Hibernate Criteria API的基础知识: - **Criteria API**:...
Hibernate 中 Criteria 的用法 Hibernate 中 Criteria 的用法是 Hibernate 框架中的一种查询机制,它提供了灵活的查询方式,可以根据不同的条件进行查询。Criteria 查询机制主要包括 QBE(Query By Example)、QBC...
【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...
**Hibernate Criteria 完全使用详解** Hibernate Criteria API 是 Hibernate 框架中一个强大的查询工具,它提供了一种面向对象的方式来构建SQL查询,使得开发者无需直接编写SQL语句,即可进行复杂的数据库操作。...
Hibernate 中 Criteria 的完整用法 Hibernate 的 Criteria 是一种强大且灵活的查询机制,允许开发者根据需求灵活地组装查询条件。Criteria 的设计是基于 CriteriaSpecification 父接口,提供了 Criteria 和 ...
在Hibernate中,使用`Criteria`进行查询时,可以通过添加排序条件来对结果集进行排序。`Criteria`提供了一个非常灵活的方式来实现这一点。 **示例代码**: ```java Criteria criteria = session.createCriteria...
**关联映射Hibernate的Criteria用法详解** 在Java开发中,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。其中,Criteria API是Hibernate提供的一个动态查询工具,它允许开发者以面向...
本篇内容将聚焦于Hibernate中的Criteria查询,这是一种动态构建SQL查询的方法,无需直接编写SQL语句,非常适合在程序运行时根据条件构建查询。 在Hibernate中,Criteria API提供了一种类型安全的方式来执行查询,它...
本文将对 Hibernate 中 Criteria 的用法进行总结,涵盖 Criteria 和 DetachedCriteria 的差异、Criterion 和 Projection 的使用方法等。 Hibernate 设计了 CriteriaSpecification 作为 Criteria 的父接口,下面提供...
以下是对Criteria用法的详细说明: 1. **创建Criteria实例**: 要开始使用Criteria,你需要在Hibernate的Session中调用`createCriteria()`方法,传入你想查询的实体类的Class对象。例如,如果你要查询Person实体,...
在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以编程方式构建查询,而不是直接写SQL语句。下面将详细解释Criteria API的使用及其相关概念。 1. Query By Example ...
3. 设置投影:如果需要聚合或特定字段,可以使用Projections的方法并调用Criteria的setProjection()。 4. 设置排序:使用Criteria的setOrder()或addOrder()方法指定排序规则。 5. 执行查询:最后,调用Criteria的...
使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。Criteria 和 DetachedCriteria 都可以使用Criterion 和 Projection 设置查询条件,可以设置 FetchMode...