HQL的select new map ···语法
2017-12-05 23:10
267 查看
通常hibernate查询出的结果集是类似于 List<T> 或 List<Object[]> 的类型
类似于下面这个方法
其实hibernate可以查询出List<Map<String,Object>>类型的结果集。现简单代码描述
语句1
语句2
语句3
hibernate对 select new map类型的hql解析的时候,遇到map这个关键字,将后面的列作为值,别名作为键(若无别名,则用数字代替)存入到一个HashMap中。
方法中使用该类型hql
附:select new ***类型解释
类似于下面这个方法
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 Type(column) from table
- Hibernate HQL 中的select new map 使用实例 嵌套Map
- ScalarHandler: 将单个值封装、 例如select count(*),求内容的条数;KeyedHandler:将多条记录封装到一个Map集合的Map集合中。并且外面的Map集合是可以指定的
- Python特殊语法:filter、map、reduce、lambda [转]
- HQL查询及语法
- MySQL的select语法
- HQL 语法(转)
- 高德地图加载白屏问题No implementation found for long com.autonavi.amap.mapcore.MapCore.nativeNew
- 【Hiberante】hql常用语法
- Map map=new HashMap(); 为什么是这样
- Python特殊语法:filter、map、reduce、lambda [转]
- ios 解决bug---UITableView删除到最后一个unable to generate a new section map with old section count: 1 and new
- 怎样用hibernate的hql查询查询成map或list
- ES6学习——类语法:super和new.target
- Esper系列(十)NamedWindow语法delete、Select+Delete、Update
- C#语法中的select
- hql 语法
- SELECT 语法和逻辑处理顺序 (含示例)
- HQL select 总结
- 怎样用hibernate的hql查询查询成map或list