当前位置: 首页 > news >正文

HQL的select new map ···语法

通常hibernate查询出的结果集是类似于 List<T> 或 List<Object[]> 的类型

类似于下面这个方法

public List<SfJmsfT> getChosePayList(SfJmsfT jmsf) {
        List list = new ArrayList();
        StringBuilder hql = new StringBuilder();
        hql.append("From SfJmsfT where zf = 0 and yhbh=? and czbh=?");
        List<SfJmsfT> result = null;
        try {
            result = this.executeHqlList(hql.toString(), new Object[]{jmsf.getYhbh(),jmsf.getCzbh()});
        } catch (BDXCException e) {            
            e.printStackTrace();
            logger.error(BDXCUtil.getExceptionString(e));
        }
        return result;
    }

其实hibernate可以查询出List<Map<String,Object>>类型的结果集。现简单代码描述

语句1

// 结果list中,每条记录对应一个object数组,object[]中每个元素为hql语句中列的序号(从0开始)。
 String hql=“select s.name from Student s”;
 List ls=session.createQuery(hql).list();
 for(String obj[]:ls){
       System.out.pringln(obj[0]);
 } 

语句2

//结果list中,每条记录对应一个map,map中key为hql语句中的序号,从0开始,key为字符,非数字。
String hql=“select new map(s.name) from Student s”;
List ls=session.createQuery(hql).list();
for(Map m:ls){
      System.out.pringln(m.get("0"));
}        

语句3

//结果list中,每条记录对应一个map,map中key为hql语句中的别名。
String hql=“select new map(s.name as name)  from Student s”;
List ls=session.createQuery(hql).list();
for(Map m:ls){
       System.out.pringln(m.get("name"));
}        

hibernate对 select new map类型的hql解析的时候,遇到map这个关键字,将后面的列作为值,别名作为键(若无别名,则用数字代替)存入到一个HashMap中。 

 

方法中使用该类型hql

    public String getThirdPayList(BDXCPageContext context, SfJmsfT queryVo) {

        List list = new ArrayList();
        // 根据queryVo对象转换查询条件
        String sql = "SELECT COUNT(yhbh) FROM sf_jmsf_t WHERE zf='0' and jffs='银行' ";
        sql=sqlPingjie(sql,queryVo);
        Long num = serialBillDao.getThirdPayListCount(sql, list.toArray());
        context.setTotalNum(num.intValue());
        String hql = " select new map(bh as bh,yhbh as yhbh,cnq as cnq,fylb as fylb ,"
                + "jfrq as jfrq,jfje as jfje,zkje as zkje,czbh as czbh,lsh as lsh ,jffs as jffs ,"
                + "czy as czy) FROM SfJmsfT  WHERE zf='0' ";
        hql=sqlPingjie(hql,queryVo);
        List result = serialBillDao.getThirdPayList(hql, list, context);
        String msg = BDXCUtil.createJsonStr(context.getTotalNum(), result);
        return msg;
    
    }

 

附:select new ***类型解释

select new List(p.name, p.address) from Person as p ;
--select将选择出来的属性存入一个List对象中
select new ClassTest(p.name, p.address) from Person as p;
--select将选择出来的属性封装成对象,前提是ClassTest支持p.name, p.address的构造函数,
select new Map(p.name as personName) from Person as p ;
--select将选中的表达式命名为别名,这种用法与new Map()结合,选择出来的是Map结构, 以personName为key,将实际选择出来的值作为value

 

相关文章:

  • 使用canvas检测HTML5视频解码错误
  • Android Studio 导出 Jar 给 Unity 使用
  • 数据库关联映射建表(一对一,一对多,多对多)
  • window环境下 恢复odoo数据库备份文件时产生的 Database restore error: Command `psql` not found....
  • ubuntu12.04下Eclipse上集成python
  • 莫名奇妙的异常001:Invalid or unexpected token
  • 通过MCollective更加安全地实现puppet的推送更新功能
  • 匈牙利算法
  • 新站上线后 收录又被删掉的原因
  • 「前端」尚妆 UI 组件库工程实践(weex vue)
  • (转载)虚函数剖析
  • EBS adpatch logfile : log, lgi
  • WCF 有零个操作;协定必须至少有一个操作
  • Oracle EBS 如何生成trace文件
  • 《常微分方程教程》习题2.4.1,(4)
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • canvas绘制圆角头像
  • dva中组件的懒加载
  • JavaScript HTML DOM
  • JavaScript 基本功--面试宝典
  • mysql_config not found
  • Rancher-k8s加速安装文档
  • Transformer-XL: Unleashing the Potential of Attention Models
  • VUE es6技巧写法(持续更新中~~~)
  • 大数据与云计算学习:数据分析(二)
  • 番外篇1:在Windows环境下安装JDK
  • 聚簇索引和非聚簇索引
  • 老板让我十分钟上手nx-admin
  • 手写双向链表LinkedList的几个常用功能
  • 微信支付JSAPI,实测!终极方案
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #if和#ifdef区别
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (ZT)一个美国文科博士的YardLife
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (五)关系数据库标准语言SQL
  • (学习日记)2024.01.09
  • (转)setTimeout 和 setInterval 的区别
  • (转载)Linux 多线程条件变量同步
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [C++基础]-初识模板
  • [docker] Docker的私有仓库部署——Harbor
  • [echarts] y轴不显示0
  • [Google Guava] 1.1-使用和避免null
  • [NBIoT]NBIoT相关知识
  • [PHP]pearProject协作系统 v2.8.14 前后端
  • [QT]抄—影像显示实验
  • [TFF联邦学习]送给想要了解TFF的盆友
  • [THUPC 2024 初赛] 二进制 (树状数组单点删除+单点查询)(双堆模拟set)
  • [unity]切换天空盒