Hibernate支持HQL和SQL的查询,返回结果支持POJO类型或字段/数组的形式。
开发中用Hibernate进行数据库查询,用的是SQL。
原来需要查询一个表的几乎所有字段,所以我使用了addEntity方法,将查询结果转换为映射的对象。
后来需求变更,需要查询另外几个表的若干字段,不想继续用addEntity绑定新加的表(毕竟只有几个字段需要查询出来,将多余的字段都转换成映射对象,或只将需查询的字段转换为映射对象,从维护角度来说似乎都不太好),网上查了查:
于是在addEntity后再使用addScalar方法指定字段以指定格式返回
于是返回的List中包含Object[]数组,这样在数组中除了有addEntity的映射对象,还有指定类型的字段结果
常用的结果集:
一、使用HQL的情况:
1、查询字段:使用"select t.field from Sample t ",返回List包含Object对象,如果查询多个单独字段,则返回的List包含Object[]
List<String> list = super.getHibernateTemplate().find("select distinct t.job from Emp t order by t.job");
2、查询单个整个对象:使用"from SampleTable t where t.field = :filed "的写法,默认返回封装好的SampleTable对象List
3、查询多个整个对象:可指定获取哪些对象,如"select t1, t2 from SampleTable t1, SampleTable t2 where ...",此时会返回List中包含Object[],Object[]中在0位置为SampleTable对象,1为SampleTable对象
4、查询非映射对象:还可以以构造方法的方式"select new SomeVo(t.field1, t.field2) from xxx t1",返回封装好的SampleTable对象List
5、既查询整个对象又查询单个字段:使用"select t, t2.field from Sample t, Sample2 t2 ",返回List包含Object[]对象,而Object[]包含Sample对象,还有为字段类型的值
二、使用SQL的情况:
查询字段跟HQL的形式类似
查询单个整个对象,由于使用的是SQL,需要程序中用addEntity方法指定SQL查得的值与映射对象的关系(addEntity指定的对象类型必须为已经注册的映射对象)
查询多个整个对象,用多个addEntity绑定
既查询整个对象又查询单个字段:在addEntity后再使用addScalar方法,返回List包含Object[]对象,而Object[]包含Sample对象,还有为字段类型的值
作者:Nick Huang 博客:http://www.cnblogs.com/nick-huang/ 本博文为学习、笔记之用,以笔记记录作者学习的知识与学习后的思考或感悟。学习过程可能参考各种资料,如觉文中表述过分引用,请务必告知,以便迅速处理。如有错漏,不吝赐教。
分享到:
相关推荐
HQL Hibernate 查询语言 HQL(Hibernate Query Language)是 Hibernate 中的一种强大的查询语言,它看起来很像 SQL,但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解...
Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以使用面向对象的编程方式来处理数据。"ACCP6.0"可能指的是一个特定的软件开发课程或版本,而"使用Hibernate开发租房系统2"意味...
`Criteria API` 是一种更加灵活和类型安全的查询方式,可以替代传统的HQL(Hibernate Query Language)来构建动态查询。而`Pagination`则是处理大量数据时,分批次获取结果的策略。 1. **Criteria API 分页**: ...
通过这种方式,可以更加灵活地管理和查询具有复杂关联关系的数据。 综上所述,Hibernate提供了丰富的特性来支持各种数据库操作需求,包括不同的加载策略、自动同步机制以及多种主键生成策略等。理解并合理利用这些...
本篇文章主要介绍利用Hibernate框架来实现基本的功能操作,包括登录验证、查询、增加、修改以及删除等常用操作。 #### 二、知识点详解 ##### 1. 登录验证功能实现 登录验证是许多应用中的一个常见需求。在`...
3. **避免使用`*`查询**:明确指定需要查询的字段,减少不必要的数据传输。 4. **延迟加载与立即加载**:根据需求选择合适的加载策略,对于不常用的数据可采用延迟加载,减少初始化时的内存消耗。 三、对象关系...
而随着技术的发展,Hibernate提供了多种配置方式,包括XML配置和基于注解的配置。其中,HibernateAnnotation技术是指在Java类上使用注解来替代传统的XML配置文件,这不仅简化了配置过程,还提高了代码的可读性和维护...
Criteria API 则提供了一种类型安全且更动态的查询方式。 六、事务处理 在 Hibernate 中,可以通过 `Session` 的 `beginTransaction()` 和 `commit()` 方法来处理事务。例如: ```java Session session = ...
通过HQL(Hibernate查询语言)或 Criteria API,开发者可以方便地进行复杂的数据查询。 再来谈谈MySQL,作为广泛使用的开源关系数据库,以其高效、稳定和易用性在Web开发中占有一席之地。在图书管理系统中,MySQL...
- `select` 子句用于指定查询结果集中要返回的对象或属性。例如,`select mate from Cat as cat inner join cat.mate as mate` 或者更简洁地写为 `select cat.mate from Cat cat`。 - `select` 子句可以返回任何类型...
这些方法可以适用于所有实体类,通过泛型参数来指定具体的实体类型。 - **模板方法模式**:在AbstractHibernateDao中定义模板方法,如`save(T entity)`,然后在子类中根据需要重写特定的逻辑,如事务处理或错误处理...
实体对象的延迟加载是 Hibernate 中最基础也是最常用的延迟加载方式之一。要启用实体对象的延迟加载,需要在 Hibernate 映射文件中进行相应的配置。 ##### 配置示例 ```xml <hibernate-mapping> ... </...
- **1.1 前言**:介绍了 Hibernate 的背景及其为何能成为 Java 开发者常用的 ORM 工具之一。 - **1.2 第一部分——第一个 Hibernate 应用程序** - **1.2.1 第一个 class**:创建一个简单的 Java 类来表示实体。 - ...
6. **添加C3P0和其他配置**:将C3P0的JAR包复制到项目的lib目录下,并添加Hibernate的一些常用配置项,这些配置项可以通过配置文件或界面方式进行添加。 #### 五、生成类的映射文件 1. **创建数据库表**:使用SQL...
例如,当用户请求分页浏览时,Action类会根据请求参数计算当前页码,然后调用Hibernate的Session查询接口,获取指定范围内的学生信息。同时,Struts2的Result返回相应的视图,展示数据。 模糊查询功能是系统的一大...
- **含义**:此标题指的是一种使用Hibernate框架实现的数据访问对象(DAO)设计模式的具体实现方式。它强调了该DAO类是通用的,意味着它可以被应用于多种不同的实体类型上,而不需要针对每种实体都编写特定的DAO类。...
可以指定返回的字段,也可以是整个对象。 - **单值查询**:返回一个对象或标量值。 - **计数查询**:返回匹配记录的数量。 - **更新查询**:批量更新对象的属性。 - **删除查询**:删除满足条件的对象。 4. **...
在IT行业中,SSH框架是Java Web开发中常用的三大框架组合,包括SpringMVC、Spring和Hibernate。本教程将详细介绍如何一步步搭建一个基于SSH的Web应用环境,并提供了解决常见问题的说明文档。 首先,让我们从...
- **内置桥接**:提供了一些常用的桥接实现,如日期格式化、枚举类型转换等。 - **自定义桥接**:允许开发人员实现自己的桥接逻辑,以便更灵活地处理数据。 #### 六、查询 ##### 6.1 构建查询 - **Lucene 查询**...
Struts、Spring 和 Hibernate 是Java开发中常用的三大框架,它们分别负责不同的职责,共同构建了企业级应用的基础架构。在“Struts+Spring+Hibernate_upload_and_download.rar_Spring+Hibernate”这个压缩包中,我们...