zoukankan      html  css  js  c++  java
  • hibernate框架之-查询结果集返回类型

    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对象,还有为字段类型的值
  • 相关阅读:
    (一)Python入门-3序列:04列表-元素删除的3种方式-删除本质是数组元素拷贝
    (一)Python入门-3序列:05列表-元素的访问-元素出现次数统计-成员资格判断
    Java学习笔记_180704_final和static关键字
    Java学习笔记_180702_基本类型和引用类型作为参数传递特性
    Java学习笔记_180702_面向对象编程
    如何手动实现整型数值60的二进制到十六进制的转换
    Java学习笔记_180627_循环控制语句
    兔子生兔子问题(斐波那契数列)
    Java学习笔记_180625_基础语法
    ubuntu和win10双系统,用ubuntu引导win10启动
  • 原文地址:https://www.cnblogs.com/PMlog/p/5914826.html
Copyright © 2011-2022 走看看