- 浏览: 89670 次
- 性别:
- 来自: 上海
文章分类
最新评论
【转自】http://blog.csdn.net/canduecho/article/details/4149924
投影查询——过滤部分字段 返回的List集合元素为Object[] Query query = session.createQuery("select c.cname, c.csex from Customer c"); List list = query.list(); Iterator iter = list.iterator(); Object[] objs = null; while(iter.hasNext()){ objs = (Object[]) iter.next(); for(int i = 0; i < objs.length; i ++){ System.out.println(objs[i]); } System.out.println("-------------------"); } 分页查询 Query query = session.createQuery("from Customer c"); query.setFirstResult((当前页-1) * 页大小);//从哪儿开始取 query.setMaxResults(页大小);//最多取多少条记录 Iterator iter = query.list().iterator(); Customer c = null; while(iter.hasNext()){ c = (Customer) iter.next(); System.out.print(c); } 连接查询——多表连接 连接类型 HQL语法 内连接 inner join 或者 join 迫切内连接 inner join fetch 或者 join fetch 左外连接 left outer join 或者 left join 迫切左外连接 left outer join fetch 或者 left join fetch 右外连接 right outer join 或者 right join 迫切左外连接 Query query = session.createQuery("from Customer c left join fetch c.orders o"); Iterator iter = query.list().iterator(); 说明: 关键字:left join fetch 返回结果为Customer类型,再通过Customer对象导航到Orders对象 返回结果可能包含重复元素,通过Set去掉重复行 结果见备注 左外连接 Query query = session.createQuery("from Customer c left join c.orders o"); Iterator iter = query.list().iterator(); 说明: 关键字:left join 返回的集合中,元素类型为Object[],该数组包含Customer和Orders对象,即:Object[0]=Customer,Object[1]=Orders 没有重复元素 结果见备注 内连接 Query query = session.createQuery("from Customer c inner join c.orders o"); Iterator iter = query.list().iterator(); 说明: 关键字:inner join 返回的集合中,元素类型为Object[],该数组包含Customer和Orders对象,即:Object[0]=Customer,Object[1]=Orders 没有重复元素 结果见备注 和左外连接的处理方式相同 迫切内连接 Query query = session.createQuery("from Customer c inner join fetch c.orders o"); Iterator iter = query.list().iterator(); 说明: 关键字:inner join fetch 返回结果为Customer类型,再通过Customer对象导航到Orders对象 返回结果可能包含重复元素,通过Set去掉重复行 结果见备注 处理方式和迫切左外连接相同 右外连接 Query query = session.createQuery("from Customer c right outer join c.orders o"); Iterator iter = query.list().iterator(); 说明: 关键字:right outer join 返回的集合中,元素类型为Object[],该数组包含Customer和Orders对象,即:Object[0]=Customer,Object[1]=Orders 没有重复元素 结果见备注 和左连接、内连接的处理方式相同 投影查询 Query query = session.createQuery("select c.cid, c.cname, o.odate from Customer c right outer join c.orders o"); Iterator iter = query.list().iterator(); 说明 投影即只返回一部分字段 返回的结果集中,元素类型为Object[],数组中元素个数即为select语句后的字段个数 结果见备注 分组查询与聚合查询——group by 对客户按性别分组 select c.csex, count(*) from Customer c group by c.csex 说明: 返回的结果集中,元素类型为Object[],数组元素个数即为返回的字段个数 统计出每个客户的订单数量 select c.cname, count(o) from Customer c left join c.orders o group by c.cname 找出年龄最大的客户 Query query = session.createQuery("select max(c.cage) from Customer c"); Object obj = query.uniqueResult(); 通过uniqueResult()保证只返回一个结果 代码见备注 子查询 找出年龄大于平均年龄的客户 select c.cname, c.cage from Customer c where c.cage > (select avg(c.cage) from Customer c) 结果见备注 子查询可以和all,any,some,in,exists使用 找出至少有一份订单的客户 from Customer c where exists (from c.orders) 代码见备注 总结 了解Hibernate的检索策略对于查询结果的优化大有稗益 Hibernate的HQL语法和sql非常相似,有sql基础的人非常容易学习 只有精通SQL才能灵活应用,这一点毋庸置疑
发表评论
-
Tomcat Servlet request.getRemoteAddr()所得值为0:0:0:0:0:0:0:1
2013-11-08 11:53 1566环境: tomcat5.6 JSP UTF-8 IP协 ... -
追踪应用客户端IP
2013-08-22 09:53 730参考: http://www.knowsky.co ... -
java多线程发送URL请求
2013-07-19 11:32 1205import java.io.Buffered ... -
java启用多进程调用某个类(是class文件)
2013-07-19 11:29 654import java.io.BufferedInpu ... -
支持Window和Linux下tar.gz文件压缩
2013-07-04 19:12 990最近做文件压缩,最后在Window下压缩解压后都可以,可是在W ... -
请慎用java的File#renameTo(File)方法
2013-07-03 12:14 559转自: http://xiaoych.iteye.com/bl ... -
java从tar.gz中抽取某个文件
2013-07-01 15:03 1325File tarGzFile = new File(a ... -
在不同jar文件中有两个同名类是加载的哪一个已经classload
2013-06-24 09:33 1470在Eclipse中加载第一个(通常是lib下面的顺序,但并非一 ... -
Java泛型的使用及List排序
2013-04-19 09:56 975import java.util.ArrayLis ... -
java删除一个文件夹,包括该文件夹下的所有文件夹及文件
2013-04-10 17:42 786要删除的文件必须存在且是一个文件夹,可以根据自己的需求,在调用 ... -
java压缩文件生成XXX.tar.gz压缩包
2013-04-09 13:42 2262生成XXX.tar.gz压缩文件有两种方式,可以先打包后压缩, ... -
java按照编码读写文件
2013-04-07 09:28 802package d20130406; impor ... -
java字符串中显示双引号
2013-04-19 09:58 1210转: http://www.cnblogs.com/zhish ... -
java写入txt文件
2013-04-19 09:59 640用另一个构造方法FileWriter fileWriter=n ... -
读取文件方法大全
2013-04-25 11:51 284转自: http://www.cnblogs.com/love ... -
Java性能监测
2013-04-15 13:20 573通过jdk自带工具监测: -
Java 32bit JVM Xmx 参数大小限制
2013-03-07 13:26 1424转自: http://stackoverflow.com/qu ... -
Java模拟HTTP发送请求
2013-04-15 13:17 757package com.hp.pn.service; ... -
tomcat配置文件
2013-03-01 13:51 636转自: http://www.cnblogs.com/smil ... -
PermGen space错误解决方法,java.lang.OutOfMemoryError
2013-03-01 11:07 797转自: http://www.cnblogs.com/xwdr ...
相关推荐
当我们需要进行更复杂的数据库查询时,Hibernate提供了丰富的高级查询功能,这正是“Hibernate的高级查询”这一主题的核心所在。 在Hibernate中,高级查询主要包括HQL(Hibernate Query Language)、Criteria API和...
本资源“Hibernate QBC高级查询”聚焦于Hibernate Query by Criteria(QBC)的高级用法,旨在帮助开发者深入理解并熟练运用这一强大的查询机制。 Query by Criteria是Hibernate提供的另一种查询方式,与HQL...
除了基础的查询,Hibernate还支持连接查询、子查询、聚合函数等高级功能。例如,如果你需要根据用户的年龄进行分组并计算每个年龄段的用户数量,可以这样写: ```java String hql = "select age, count(*) from ...
《Hibernate高级教程》是一份深度探索Java对象关系映射(ORM)框架Hibernate的教程,它包含14个精心设计的章节,旨在帮助开发者深入理解并掌握Hibernate的核心特性和高级用法。以下是对这些章节可能涉及的主要知识点...
QueryOver是NHibernate(.NET版Hibernate)引入的一个高级查询API,但也可以在Java Hibernate中使用,它提供了更丰富的查询语法。虽然在Java中使用QueryOver不如使用Criteria API常见,但在某些场景下,QueryOver能...
本文详细介绍了 Hibernate 提供的各种查询方式,包括 `load`、`get`、`createQuery` 和 `find` 等方法,并重点阐述了 HQL 查询的基本用法和高级技巧。通过本文的学习,读者可以掌握 Hibernate 的基本查询操作,并能...
除了状态转换,数据缓存也是Hibernate高级特性的一部分。Hibernate提供了First-Level Cache(一级缓存)和Second-Level Cache(二级缓存)来优化性能。一级缓存是每个Session的私有缓存,存储了Session内的实体对象...
总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...
Hibernate高级查询 介绍了hibernate的各种查询方法,以及HQL的使用
尽管Hibernate提供了一系列高级查询机制,但在某些情况下直接使用SQL查询仍然非常有用。 **特点:** - **直接性强:** 直接使用SQL查询,能够利用数据库本身的优化能力。 - **易理解:** 对于大多数开发者来说,...
本实例主要探讨的是Hibernate的高级映射技术,包括单向一对一、单向多对一、单向一对多以及单向多对多这四种关系映射。 首先,我们来理解一下什么是映射。在Hibernate中,映射是将对象模型与关系数据库之间的桥梁,...
Hibernate高级 1.Hibernate中文手册 2.Hibernate课件 Javascript高级 1.JS验证大全(很全) 2.Javascript高级教程 3.Javascript参考手册 CSS滤镜 1.精通CSS--滤镜 JSP高级编程 1.jsp高级编程 插件编程 1....
Hibernate支持设置批处理大小,通过`Session.flush()`方法强制刷新缓存中的操作,批量提交到数据库。 8. **级联操作** 级联操作允许在一个实体的操作中自动处理其关联的实体。例如,`CascadeType.ALL`将使保存、...
**Hibernate高级操作** 在Java开发领域,Hibernate是一个广泛使用的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。深入理解Hibernate的高级操作对于提升开发效率和代码...
在Java中,我们可以使用JPA(Java Persistence API)或Hibernate等ORM框架来实现高级查询。例如,JPA提供了 Criteria API 和 Querydsl 等工具,它们可以用来创建动态、类型安全的查询,避免了SQL注入的风险。...
此外,项目可能还会涉及二级缓存的使用,以及如何在查询中进行分页、排序、聚合函数的应用等高级特性。学习并实践这些内容,不仅可以加深对Hibernate的理解,还能提高代码的可读性和维护性。 总之,通过“Hibernate...
综上所述,Hibernate的高级操作涵盖了各种查询方式、关联管理、事务处理、缓存机制等多个方面,熟练掌握这些技巧将极大地提升开发效率和应用性能。通过深入学习《精通Hibernate》和《Hibernate的高级操作》等资料,...
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置...hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式
Hibernate是一个开源的对象关系映射(ORM)框架,它封装了JDBC(Java Database ...该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个Hibernate程序等重要知识点,为学习者提供了一个实践ORM框架的良好起点。