ssh项目中,我们在前台页面展示数据的时候,经常会用到VO类.也就是把要展示的数据封装成为VO对象.这样我们在前台页面从VO对象中取数据.我们通过hql查询.往往不会需要查询出实体的全部属性.那么我们如果查询出部分属性.hibernate会自动帮你封装成为object对象[].可是,我们想直接用对象怎么办?难道还要一个一个的setter循环赋值给VO吗.不用了.下面我们看看怎么在查询结果中显示列名.怎么将查询的结果直接封装成VO
先看我的VO类:
public class SureOrder { private Integer prodid; //商品id private String name; //商品名 private String imgurl; //图片 private double cuxiaoPrice; //赠送积分 private double price; //市场价 private double newprice; //会员价 private String guiGe; //规格 private double orderPirce; //下单费 扣除会员 private double believeMoney; //爽约金 private Date believerTime; //爽约时间 private double puish; //违约金=此值+爽约金 private Integer nums; //购买数量 private Integer typeid; //1:现场结算/2:储值结算 private String note; //备注 private String pinPai; //品牌 private Integer types; //类型 1=会员非标产品 3=标准产品 2=工商非标产品(默认:3) private Integer nodeId; //小区邻郎ID private Integer qianyueId; //签约店id private Integer proId; //商品id private Integer factId; //生产企业id private double subtotal; //小计
上面是所有的VO属性.在下面的hql语句中.as列的别名一定要用和VO类里面的列名一样.可以不返回.但是你如果返回就必须一样.因为你想用hibernate自动帮你封装成VO实体.hibernate底层也是通过setter方法自动帮你赋值的.
先看DAO:
public Query getProductDetail(Integer productId,String hql) { logger.debug("********************getProductDetail方法begin****************************"); Query query = getSession().createQuery(hql); query.setInteger(0, productId); logger.debug("********************getProductDetail方法end****************************"); return query; }
dao层,我返回了一个query对象.我这样做是为了将所有的数据封装都放在了service.
接着看SERVICE:
public SureOrder getSureOrderVO(Integer productId) { String hql = "select pd.id as prodid,pd.cuxiaoPrice as cuxiaoPrice,pd.types as types,pd.price as price,pd.newprice as newprice,p.nodeId,p.imgurl as imgurl,p.types as types,p.factId as factId,p.qianYueId as qianyueId,p.guiGe as guiGe,p.name as name,p.pinPai as pinPai from Product pd,Prod p where p.id=pd.prodId and pd.id =?"; Query query = productDao.getProductDetail(productId,hql); //主要起作用的就是下面的这个方法:SureOrder是我要封装的VO类.这样hibernate在执行hql查询的时候,会直接将结果封装为SureOrder对象. List list = query.setResultTransformer(Transformers.aliasToBean(SureOrder.class)).list(); if(!list.isEmpty()){ return (SureOrder) list.get(0); } return null; }
看一下打印输出的语句:
订单信息:{"believeMoney":0,"cuxiaoPrice":10,"factId":411,"guiGe":"40*20*12","imgurl":"prodpric/logo.png","name":"电池","newprice":800,"nums":1,"orderPirce":0,"pinPai":"万里","price":1000,"prodid":104,"puish":0,"qianyueId":439,"subtotal":800,"types":3}
看到了吗.列名出来了.并且都是键值对的方式.很方便我们用.不管你是用json序列化还是转换为VO类.很方便.不用去一个一个循环.并且对号setter了.
相关推荐
标题:“全面解析HQL语句 非常详细直接的HQL语句的功能介绍” 描述:“非常详细直接实用的HQL语句的功能介绍看过的人保准都说好” 本篇文章将深入探讨HQL(Hibernate Query Language)的核心功能及其在数据查询...
HQL语句 HQL语句 HQL语句 HQL语句 HQL语句
### HQL语句详解 #### 一、HQL简介 HQL(Hibernate Query Language)是Hibernate框架中的查询语言,它提供了面向对象的方式来进行数据库查询。HQL语法接近于SQL但又有所不同,它允许开发者以面向对象的方式来表达...
hibernate-HQL语句大全
### HQL语句详解:精通Hibernate查询语言 #### 引言 HQL(Hibernate Query Language)是Hibernate框架中用于执行数据库操作的一种强大的查询语言。它提供了面向对象的语法,允许开发人员以一种接近于编程语言的方式...
HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射...通过这些基本元素,HQL提供了强大的查询能力,使得开发者能灵活地处理对象关系数据,而无需直接编写SQL,从而提高了代码的可读性和可维护性。
常见HQL语句的示例包括输出结果,以及语句的分析总结
HQL语句查询
本文将深入解析HQL语句的常见用法。 1. 大小写敏感性 HQL对Java类和属性的名称是大小写敏感的,但在关键字和表名方面,除了类名和属性名之外,HQL不区分大小写。因此,`SeLeCT`、`sELEct`和`SELECT`被视为相同,但`...
### HQL语句语法详解 HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了灵活而强大的机制来查询数据库中的数据,并将其映射到Java对象上。本篇文章将根据给定的信息深入探讨HQL的基本语法结构...
Hibernate框架Hql语句in中带参数的写法 Hibernate框架中,在使用HQL语句时,需要传递参数,而在HQL语句中使用in关键字时,需要特别注意参数的传递方式。在本文中,我们将讨论如何在HQL语句中使用in关键字带参数的...
HQL语句(结合实例).doc HQL语句(结合实例).doc HQL语句(结合实例).doc
以下是一些常用HQL语句的使用与说明: 1. **HQL更新语句**: 更新操作允许您修改数据库中的对象属性。在示例中,第4行的HQL语句`update PhUser set realName=?`用于更新`PhUser`表中所有记录的`realName`字段。第5...
汇集了hql语句中大部分常用的函数 ABS(n) 取绝对值数学函数 数学函数 JPAQL HQL ABS(column_name[数字类型对象属性])
### HQL语句详解:Select/update/delete from where... 在探讨HQL(Hibernate Query Language)时,我们首先要了解它是一种用于Hibernate框架中的查询语言,其语法结构与标准SQL查询语言非常相似,但又针对对象关系...
Hibernate中HQL语句的使用 HQL(Hibernate Query Language)是 Hibernate 框架中的一种查询语言,它允许开发者使用面向对象的方式来查询数据库。HQL语句的使用是Hibernate中最重要的部分之一,本文将详细介绍HQL...
### HQL语句使用大全 HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了灵活而强大的数据检索方式,使开发人员能够更高效地与数据库交互。本文将详细介绍HQL的基本用法及高级特性。 #### 1. ...
完整的HQL 语句形势如下: Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc 其中的update/delete 为Hibernate3 中所新添加的功能