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
HQL的select new map ···语法的更多相关文章
- HQL查询——select子句
select子句 select子句用于选择指定的属性或者直接选择某个实体,当然select选择的属性必须是from之后持久化类包含的属性: select p.name from Person as p ...
- mysql SELECT INTO语句 语法
mysql SELECT INTO语句 语法 作用:用于创建表的备份复件. 语法:SELECT * INTO new_table_name [IN externaldatabase] FROM ol ...
- android sqlite select,update,delete语法
String sql = "update recentsongtab set usetime=? , strdatetime=? where songid=?";//修改的SQL语 ...
- concat的应用
今天遇到一个问题,有一张车辆信息表,一张车辆品牌表,他们之间的品牌进行关联, 但是车辆信息表中品牌的名称较长,而品牌表名称较短.例如:车辆表:东风标致:品牌表:标致. 为了达到两种表的“模糊关联”. ...
- 3 hql语法及自定义函数(含array、map讲解) + hive的java api
本博文的主要内容如下: .hive的详细官方手册 .hive支持的数据类型 .Hive Shell .Hive工程所需依赖的jar包 .hive自定义函数 .分桶4 .附PPT hiv ...
- hql语法及自定义函数(含array、map讲解) + hive的java api
本博文的主要内容如下: .hive的详细官方手册 .hive支持的数据类型 .Hive Shell .Hive工程所需依赖的jar包 .hive自定义函数 .分桶4 .附PPT hiv ...
- HQL语法
HQL:Hibernate Query Language HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征. $下面介绍HQL语句的语法 1.from子句 from Person 表明从P ...
- HQL基本语法及应用案例
HQL基本语法及应用案例 摘自:<大数据技术体系详解:原理.架构与实践> 一.HQL基本语法 HQL是Hive提供的数据查询语言,由于Hive巨大的影响力,HQL已被越来越多的Hive O ...
- Hql查询结果动态组装 List(map),List(bean),List(list),List(set)等格式(转)
1.//查询整个对象String hql="from Users";Query query = session.createQuery(hql);List<Users> ...
随机推荐
- Jeeplus框架中问题解决
1,文件上传后图片显示的问题 (1)问题:在这个组件的文档介绍里面写了这个组件是有预览功能的,但是我没有找到,就自己写了这个小功能. 在框架中下图中,这个文件上传组件只能将文件上传,然后将文件名显示出 ...
- Linux可以明文传输密码的工具sshpass
普通ssh只能手动输入密码,但是sshpass可以明文指定密码,但不建议使用,太不安全了.
- 什么是 Backbone.js
Backbone.js 是一个在JavaScript环境下的 模型-视图-控制器 (MVC) 框架.任何接触较大规模项目的开发人员一定会苦恼于各种琐碎的事件回调逻辑.以及金字塔般的代码.而且,在传统的 ...
- Java Http连接中(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)
使用Java的HttpURLConnection类可以实现HttpClient的功能,而不需要依赖任何其他类库.所有有时候大家就直接使用它来完成一些简单(或复杂)的功能.但是你活在伟大的{print ...
- PHP正则表达式30分钟入门教程
正则表达式30分钟入门教程 三个常用的知识点: 1.惰性匹配:正则引擎默认是贪婪的,若要最少重复的话,需要用到惰性匹配符 “?” 懒惰限定符 代码/语法 说明 *? 重复任意次,但尽可能少重复 +? ...
- [置顶] linux常用命令大全
SSH 密令控制台 user/pwd 一:停止tomcat 1,cd .. 进入根目录 2,cd home/ 3,ll 4,cd bin/ 进入tomcat bin目录 5,ll 6,ps -ef | ...
- Visual Studio 2013在线文档地址备案
Visual Studio 2013还没有离线的帮助文档,这里做个记录,以备后面使用. 地址:http://msdn.microsoft.com/zh-cn/library/dd831853.aspx
- 夏书祥-苹果iPhone多开
微信多开:就是在手机上开多个微信应用,比方同一时候打开3个微信软件. 安卓微信多开下载地址:http://yunpan.cn/cZBvE42E7qQkf 訪问password 8509 苹果微信多开 ...
- 做考试系统用到的关于onbeforeunload一些兼容性问题
最近做考试系统,一些效果存在一些兼容性问题,尤其是ie6,本人js不是很好,通过查资料解决了这些问题,现总结下: 关于onbeforeunload问题: 考试时离开页面需要提示,但是直接用此方法或on ...
- Python学习(八)异常处理
Python 异常处理 程序出错时,会抛出异常,这想必在之前学习过程中已经见过不少. 这边具体说明下Python 的标准异常.如何捕捉异常.抛出异常 以及自定义异常. python 标准异常 我们先来 ...