`
elemark
  • 浏览: 237546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转摘---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);

 

 

转自-- http://blog.sina.com.cn/s/blog_4c3c4ba80100exrp.html 何冷愁的BLOG

以作以后开发所用,仅作记录

分享到:
评论

相关推荐

    hibernate-release-5.2.10

    4. **查询语言**:HQL(Hibernate Query Language)是面向对象的查询语言,类似于SQL,但更贴近Java对象。此外,还有Criteria API和JPQL(Java Persistence Query Language)供选择。 5. **事务管理**:Hibernate...

    精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例 PDF及光盘ISO

    书中会详细介绍Hibernate的实体映射、Session管理、查询语言HQL以及Criteria API的使用,让读者能够熟练掌握数据持久化的技巧。 最后,Spring框架是现代Java应用的基石,它提供了一个全面的应用程序开发框架,包括...

    精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例完整源码.zip

    Hibernate支持实体对象与数据库表的映射,通过Session接口进行持久化操作,同时提供了 Criteria 和 HQL 查询语言,增强了数据查询的灵活性。 Spring框架是Java企业级应用的核心,它提供了全面的DI(依赖注入)和AOP...

    Hibernate-Criteria_模糊查询

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

    Hibernate-Criteria 模糊查询

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

    ACS---Support-Hibernate-1.0-(1).rar_youtube

    5. ** Criteria查询**:除了基本的HQL(Hibernate查询语言),Hibernate还提供了Criteria API进行动态查询,无需编写SQL。 6. **事务管理**:Hibernate支持自动和手动的事务管理,通常结合Spring框架进行事务控制。...

    SVSE-S3冲刺题-Hibernate笔试题

    "SVSE-S3冲刺题-Hibernate笔试题"这个标题表明这是一个针对SVSE(可能是软件版本、课程阶段或某个特定考试体系的缩写)第三阶段的冲刺复习资料,重点是Hibernate相关的笔试题目。Hibernate是一个开源的对象关系映射...

    hibernate-core-5.0.11.Final.jar

    5. **Query**:提供了HQL(Hibernate Query Language)和Criteria API,允许以面向对象的方式执行数据库查询。 四、源码分析 深入源码,我们可以看到以下关键部分: - `Configuration`类:负责读取和解析...

    hibernate-release-5.0.0.Final(1).zip

    3. Query:提供HQL(Hibernate Query Language)和JPQL(Java Persistence Query Language)来执行数据库查询,也可以通过Criteria API构建动态查询。 4. Transaction:Hibernate支持事务管理,确保数据的一致性和...

    hibernateCriteria查询

    ### Hibernate Criteria 查询详解 #### 一、概述 Hibernate Criteria 查询是一种强大的对象化查询方式,它为开发者提供了一种灵活而直观的方式来构建复杂的查询逻辑。与传统的SQL查询相比,Criteria查询更加面向...

    hibernate-core 核心jar包

    6. ** Criteria 查询**:另一种面向对象的查询方式,提供了一种动态构建查询的方式。相比HQL,Criteria查询更具有灵活性,可以根据运行时的条件动态构造查询。 7. **事务处理**:Hibernate支持JTA(Java ...

    hibernate-tutorials_java_hibernate_Eclipse_fallenweg_

    Hibernate提供了自己的查询语言HQL(Hibernate Query Language),类似于SQL,但面向对象。同时,Criteria API提供了一种类型安全的方式来构建查询,使得代码更加健壮。本教程将涵盖这两者的基本用法和高级特性。 ...

    hibernate--1.什么是 Hibernate ?

    5. **Criteria API** 和 **Query API**:提供了更现代、类型安全的查询方式,是Hibernate 4.0之后推荐的查询方式。 6. **第二级缓存**:支持缓存策略,提高应用程序性能。 7. **事务处理**:提供了对数据库事务的...

    hibernate-annotations-3.4.0.GA and hibernate-entitymanager-3.4.0.GA

    - QBC(Query By Criteria):基于Java对象的查询方式,提供构建查询条件的API。 通过以上讲解,我们可以看出`hibernate-annotations-3.4.0.GA`和`hibernate-entitymanager-3.4.0.GA`在Java ORM开发中扮演着重要...

    精通J2EE--ECLIPSE、STRUTS、HIBERNATE及SPRING整合应用案例代码-mystuman

    Hibernate支持多种数据库,包括MySQL、Oracle等,并且提供了强大的查询语言HQL,以及 Criteria 和 Criteria API,使得数据库操作更加灵活和便捷。 4. **Spring**:Spring框架是企业级Java应用的核心框架,它提供了...

    hibernate最新版jar包(全)

    4. **查询(Querying)**: Hibernate提供HQL(Hibernate Query Language)和 Criteria API两种方式来执行数据库查询。HQL类似于SQL,而Criteria API则是一种类型安全的查询方式。 5. **事务(Transactions)**: ...

    Hibernate---我的Hibernate学习笔记.doc

    5. **Query和Criteria接口**:用于执行HQL查询和基于条件的查询,其中`Query`实例封装HQL查询语句,而`Criteria`接口则完全封装了条件查询过程,更加灵活。 综上所述,Hibernate通过其强大且易用的API,简化了Java...

    记录-笔记-用ANT构建-struts-spring-hibernate

    它支持HQL(Hibernate Query Language)和 Criteria API,提供了一种更加面向对象的方式来执行SQL查询。 5. **整合Struts、Spring和Hibernate**:将这三个框架整合在一起,可以构建出一个强大的、解耦的、易于维护...

    hibernate-release-5.4.25.Final_Hibernate5.4.25_hibernate所需jar包_源

    2. 查询:使用Query或Criteria API,支持复杂条件、分页、排序等查询,甚至可以执行动态SQL。 3. 支持事务:Hibernate内置了对JTA和JTASessionContext的支持,方便在分布式环境中进行事务管理。 4. 第二级缓存:通过...

Global site tag (gtag.js) - Google Analytics