Hibernate 使用SQL查询生成Entity对象

昨天项目中有几个比较复杂的查询 ,故使用了createSQLQuery方法。
以前用它调用SQL语句进行查询,返回List<Object[]>,然后我在Action里一个一个的set语句生成Entity对象,那个累就不用说了。昨天朋友告诉我,Hibernate可以给我生成Entity对象,试了下果然好用,故我也贴出来。万分感谢。

[b]一:直接使用SQLQuery的addEntity方法[/b]

SQLQuery query = this.session.createSQLQuery(sql).addEntity(DbCourse.class);
query.setString("courseId", courseId);
List retList = query.list();

关键是在addEntity(DbCourse.class)这里,我以前是通过createSQLQuery直接返回Query对象,哎,悲哀。效率提升很多。

[b]二:使用SQLQuery的setResultTransformer方法,返回一个Map[/b]

try {
SQLQuery query = this.session.createSQLQuery(sql);
//返回一个map,KEY:为DB中名称一致(大小写一致)
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.setString("courseId", courseId);
getList = query.list();
if (null != retList) {
Map recMap = null;
DbCourse course = null;
for (int i = 0; i < getList.size(); i++) {
recMap = (Map)getList.get(i);
course = new DbCourse();
BeanUtils.populate(course, recMap);//对象组装
retList.add(course);
}
}
}
catch (Exception e) {}

关于 [b][color=red]BeanUtils.populate[/color] [/b]可以参考 [url]http://ferreousbox.iteye.com/blog/141330[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值