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[]
    1. List<String> list = super.getHibernateTemplate().find("select distinct t.job from Emp t order by t.job");
      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的情况:

  1. 查询字段跟HQL的形式类似
  2. 查询单个整个对象,由于使用的是SQL,需要程序中用addEntity方法指定SQL查得的值与映射对象的关系(addEntity指定的对象类型必须为已经注册的映射对象)
  3. 查询多个整个对象,用多个addEntity绑定
  4. 既查询整个对象又查询单个字段:在addEntity后再使用addScalar方法,返回List包含Object[]对象,而Object[]包含Sample对象,还有为字段类型的值

hibernate框架之-查询结果集返回类型的更多相关文章

  1. Hibernate框架的查询方式

    技术分析之Hibernate框架的查询方式        1. 唯一标识OID的检索方式        * session.get(对象.class,OID)    2. 对象的导航的方式       ...

  2. (补充)10.Hibernate框架的查询方式

    技术分析之Hibernate框架的查询方式 1. 唯一标识OID的检索方式 * session.get(对象.class,OID) 2. 对象的导航的方式 3. HQL的检索方式 * Hibernat ...

  3. tp5.0 模型查询数据的返回类型,分页

    一开始用painate()这个函数的时候,发现有的查询方式不能使用这个函数,由此了解到了模型查询和普通查询返回类型的不同 1.原生查询方法 Db::query("select * from ...

  4. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO

    在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ...

  5. Mybatis全部查询遇到的返回类型的小问题

    在学习Mybatis3过程中遇到一个小问题,觉得需要注意就把它写下来了 在查询所有数据的时候方法是这样的 public List<User> findAll(){ ..... } 在它的u ...

  6. Hibernate框架Criteria查询

    本文章适合一些初学者 一.使用Criteria查询数据        1.条件查询            1.1:使用Criteria查询的步骤                    1.使用Sess ...

  7. hibernate不同条件查询结果集一样,主键@ID的原因

    这一周在翻新公司的老项目,遇到了一些预想不到的事情. 其中一个是,使用hibernate查询,不同的查询条件,居然都查到同一条记录,感觉奇怪了,开始以为是session的原因: 后来发现是hibern ...

  8. JAVA数据库处理(连接,数据查询,结果集返回)

    package john import java.io.IOException; import java.util.*; public class QueryDataRow { public Hash ...

  9. JDBC 资源绑定器 ,处理查询结果集

    使用资源绑定器绑定属性配置 实际开发中不建议把连接数据库的信息写死到Java程序中 //使用资源绑定器绑定属性配置 ResourceBundle bundle = ResourceBundle.get ...

随机推荐

  1. js数组键入值push和 arr[]i]区别

    push 和 arr[i] 遍历 var arr = new Array(); $(":check").each(function(i){if(this.checked==true ...

  2. Ubuntu16.04 安装配置Caffe

    Caffe已经是第三次安装配置了,为什么是第三次呢?因为我实在是低估了深度学习对于硬件的要求.第一次我在自己笔记本上配置的单核,CPU only ...  结果是,样例数据跑了4小时,这还怎么玩?第二 ...

  3. Beta版本冲刺——day3

    No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 站立式会议 大将回归,基本功能接口也 ...

  4. 用freemarker定义宏实现自定义公用控件

    参考文章: Freemarker自定义标签的简单分析 定义一个基本的文本框:传入参数为:resourceName idName resourceVal="" idVal=" ...

  5. Jquery:hide一个元素,需要注意的问题(offset)

    $(".load_more").css('display','none'); 或 $(that.more).find("strong").hide(); 需要注 ...

  6. 循环语句--for

    1.guess_age优化版v1.py #coding=utf-8 age = 22 for i in range(10): if i < 3: guess_num = int(input('i ...

  7. [转]Installing python 2.7 on centos 6.3. Follow this sequence exactly for centos machine only

    Okay for centos 6.4 also On apu.0xdata.loc, after this install was done $ which python /usr/local/bi ...

  8. 使用Java的Timer处理周期性任务

    package timer; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; ...

  9. OAF_开发系列26_实现OAF中Java类型并发程式开发oracle.apps.fnd.cp.request(案例)

    20150730 Created By BaoXinjian

  10. Struts2中Action由自己与由Spring管理的区别

    struts2单独使用时action由struts2自己负责创建:与spring集成时,action实例由spring负责创建. 这导致在两种情况下struts.xml配置文件的略微差异.   假如: ...