`

Hibernate Criteria查询

阅读更多
Session s = HibernateSessionFactory.getSession();
Criteria c = s.createCriteria(PetInfo.class);



查询所有数据:
Criteria c = s.createCriteria(Student.class);



List list = c.list();





精确查询:
c.add(Restrictions.eq("id",new Integer(22)));



模糊查询:
c.add(Restrictions.like("name","%2%"));



条件查询:
c.add(Restrictions.ge("id",new Integer(9)));



范围查询:
c.add(Restrictions.between("id",new Integer(5),new Integer(8)));



逻辑语句:
and:
c.add(Restrictions.ge("id",new Integer(6)));
c.add(Restrictions.le("age",new Integer(16)));
or:
c.add(Restrictions.or(Restrictions.ge("id",new Integer(6)),Restrictions.le("age",new Integer(16))));
not:
c.add(Restrictions.not(Restrictions.ge("id",new Integer(6))));

//分页
c.setFirstResult(3);  //从第几行开始取数据
c.setMaxResults(3);   //总共取多少行数据
List list = c.list();



排序:
c.addOrder(Order.desc("id"));



分组:
c.setProjection(Projections.groupProperty("age"));



查询的结果只有一个值时:
Object obj = c.uniqueResult();



统计函数的使用:
avg() rowCount() count() max() min() countDistinct()
c.setProjection(Projections.avg("age"));



在SQL语句中的多条件分组与统计功能,
可以利用ProjectionList类来实现:
Criteria c=session.createCriteria(User.class);
ProjectionList prolist=Projections.projectionList();
prolist.add(Projections.groupProperty("age"));
prolist.add(Projections.rowCount());
c.setProjection(prolist);
通过以上代码,实现了对不同年龄人员数量的分组统计,
当进行检索时,Hibernate会生成类似如下的SQL语句:
Select age,count(*) from user group by age;

在Hibernate3中DetachedCriteria类的使用:
构造常用的查询条件,需要的时候与session关联
(与PreparedStatement类似)
DetachedCriteria dc= DetachedCriteria.forClass(User.class);
dc.add(Expression.eq("name","zhaoxin"));
dc.add(Expression.eq("sex","1"));
Criteria c=dc.getExecutableCriteria(session);
Iterator it=c.list().iterator();
注意:
DetachedCriteria的生存周期与session实例无关,
当需要进行检索时,通过getExecutableCriteria(session)方法,
与当前的Session实例关联并获得运行期的Criteria实例,
完成检索。

DetachedCriteria类实现子查询:
DetachedCriteria dc= DetachedCriteria.forClass(User.class);
dc.setProjection(Projections.avg("age"));
Criteria c=session.createCriteria(User.class);
c.add(Subqueries.propertyGt("age",dc));
List list=c.list();
当执行检索时Hibernate会生成类似如下的SQL语句:
Select * from user where age>
(select avg(age) from user group by age);
分享到:
评论

相关推荐

    hibernateCriteria查询

    在Hibernate框架中,Criteria查询是除HQL之外的另一种常用查询方式。 #### 二、Criteria 接口 `org.hibernate.Criteria` 接口代表了针对某个特定持久化类的查询。在Hibernate中,可以通过`Session` 对象的 `...

    Hibernate中,利用Criteria查询容器实现sql的写法

    本篇将详细讲解如何在Hibernate中利用Criteria查询来实现类似SQL的查询操作,并探讨其在实际开发中的应用。 Criteria查询是Hibernate提供的一种灵活的查询方式,它可以让我们根据业务需求动态地构建查询条件。这种...

    Hibernate criteria基本操作

    Hibernate Criteria 是一种在Java应用程序中使用Hibernate ORM框架执行SQL查询的方式。它提供了一种面向对象的方式来构建查询,使得代码更加可读和易于维护。Criteria API 提供了多种方法来构建复杂的查询,包括添加...

    Hibernate_Criteria条件查询数据

    本资料主要关注的是Hibernate中的Criteria查询,这是一种灵活且强大的查询机制,允许程序员以编程方式构建SQL查询。 Criteria查询是Hibernate提供的API,与传统的HQL(Hibernate Query Language)查询相比,它更...

    Hibernate Criteria

    Hibernate QBC(Query By Criteria)查询是Criteria查询的另一种表达方式,其本质与Criteria查询相同,都是通过构建对象化的查询条件执行SQL。在QBC中,`Expression`类的角色被`Restrictions`类取代,但工作方式类似...

    Hibernate 多表连接分页查询示范项目

    总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...

    hibernate如何使用criteria联合查询 group by 的语句

    这个案例是根据分组查询,并且得到每组的条数,不懂得可以q我:1710086675,欢迎认识更多新朋友

    Hibernate Criteria 排序的問題

    - **Criteria API**:是Hibernate提供的一种灵活且强大的查询方式,允许开发者通过程序化的方式来构建查询条件。 - **Order**:用于表示排序规则的对象,包含升序(asc)和降序(desc)两种类型。 - **Criteria....

    Hibernate的Criteria用法总结

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

    hibernate criteria 分组 排序 关联

    ### Hibernate Criteria 分组、排序与关联查询详解 #### 标题与描述理解 - **标题**:“hibernate criteria 分组 排序 关联”这一标题明确了本文将围绕Hibernate Criteria API进行分组、排序以及关联查询的具体...

    Criteria hibernate

    本篇内容将聚焦于Hibernate中的Criteria查询,这是一种动态构建SQL查询的方法,无需直接编写SQL语句,非常适合在程序运行时根据条件构建查询。 在Hibernate中,Criteria API提供了一种类型安全的方式来执行查询,它...

    Hibernate-Criteria_模糊查询

    在深入探讨Hibernate与Criteria结合进行模糊查询之前,我们先来了解一下Hibernate和Criteria的基本概念,以及为何选择使用它们进行模糊查询。 ### Hibernate简介 Hibernate是一个开放源代码的对象关系映射(ORM)...

    Hibernate Criteria 完全使用

    - `Session.createCriteria(Class entityClass)`:这是创建Criteria查询的起点,需要指定要查询的实体类。 - `Criteria`:表示一个查询实例,可以添加各种查询条件、排序规则和结果限制。 - `DetachedCriteria`:...

    hibernate criteria的使用方法

    1. **Criteria**:`org.hibernate.Criteria` 接口是 Criteria 查询的核心,它提供了各种方法来设置查询条件。 2. **Criterion**:`org.hibernate.criterion.Criterion` 接口定义了一个查询标准,用于表示查询条件。 ...

    Hibernate的Criteria 查询方法

    【Hibernate的Criteria查询方法】 在软件开发中,尤其是在Java领域,ORM(对象关系映射)框架如Hibernate大大简化了数据库操作。Hibernate Criteria查询是其中一种强大的API,它提供了一种面向对象的方式来执行...

    Hibernate-Criteria 模糊查询

    ### Hibernate-Criteria 模糊查询详解 在Java的持久化技术中,Hibernate作为ORM(对象关系映射)框架的一种,提供了强大的数据访问能力。而其中的`Criteria`接口更是为复杂的查询需求提供了一种灵活且功能强大的...

    Hibernate中Criteria的完整用法

    Hibernate 的 Criteria 是一种强大且灵活的查询机制,允许开发者根据需求灵活地组装查询条件。Criteria 的设计是基于 CriteriaSpecification 父接口,提供了 Criteria 和 DetachedCriteria 两个实现。 Criteria 和 ...

    Hibernate Criteria用法大全.docx

    Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件,无需直接编写SQL,使得代码更加...

    Hibernate的Criteria用法总结.doc

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

Global site tag (gtag.js) - Google Analytics