生成DTO的两种方式

标签: dto | 发表时间:2013-03-01 17:06 | 作者:angus_17
出处:http://blog.csdn.net
假设我们现在有一个DTO,其属性包括两张表的属性,我们现在需要将sql语句查询得到的内容转为一个DTO对象,其解决方法如下: 


方法一:
SQLQuery query = session.createSQLQuery("select a.id as areaId,a.name as areaName,c.id as screenId,c.name as screenName from HPS_ParkingLotArea a left join HPS_ParkingLotScreen c on a.screenId = c.id ");
List list = query
.addScalar("areaId",Hibernate.INTEGER)
.addScalar("areaName",Hibernate.STRING)
.addScalar("screenId",Hibernate.INTEGER)
.addScalar("screenName",Hibernate.STRING)
.setResultTransformer(Transformers.aliasToBean(AreaWithScreen.class)).list();
return list;
在执行完sql语句之后,取到相应的属性,并赋予其类型,最后借助aliasToBean来转化为相应的类的实例。(此类无需有其他构造方法)




方法二: 
Query q = session.createQuery("select new com.hibernate.MsgInfo(m.id, m.cont, m.topic.title, m.topic.category.name) from Msg m");  
List<MsgInfo> list=q.list();  

其中,MsgInfo是DTO。值得留意的是,第二种方法中DTO必须提供带参数的构造方法,并且HQL语句中属性的位置要与构造方法中的位置逐一对应。


对于DTO对象要注意,是int还是Integer。如果是int,但set方法中的方法也是int,则如果为空,会报错。

作者:angus_17 发表于2013-3-1 17:06:41 原文链接
阅读:2 评论:0 查看评论

相关 [dto] 推荐:

生成DTO的两种方式

- - CSDN博客推荐文章
假设我们现在有一个DTO,其属性包括两张表的属性,我们现在需要将sql语句查询得到的内容转为一个DTO对象,其解决方法如下: . 在执行完sql语句之后,取到相应的属性,并赋予其类型,最后借助aliasToBean来转化为相应的类的实例. 其中,MsgInfo是DTO. 值得留意的是,第二种方法中DTO必须提供带参数的构造方法,并且HQL语句中属性的位置要与构造方法中的位置逐一对应.