hibernate使用本地sql语句查询,解决List Object转换成List Entity

本人第一次写技术文档的博客,可能有什么语言语法问题,还有技术类的名词误解请多包涵,并予以指正方便我和大家更好的学习。废话不多说,开始进行现在的任务。

我们在使用hibernate框架时,对于程序员使用hibernate模板HibernateTemplate进行事务处理。对于增删改很方便,但是对于查可能很大的问题了。所以我们自己编写sql语句,不能依赖于Hql。在SSH框架的项目中,我是这样来处理的。如果哪个网友有更好的方法,欢迎提供!

我想到一个查询方法,sql语句是这样的

SELECT * FROM (SELECT  o.* FROM shop_goods o ORDER BY o.goods_date DESC ) e LIMIT 3;

不能翻译成Hql语句,此时要用hibernate执行本地sql语句。

public List<Object[]> findGoodsByDate() {
	final String sql = "SELECT * FROM (SELECT  o.* FROM shop_goods o ORDER BY o.goods_date DESC ) e LIMIT 3";
	//执行sql语句
	List<Object[]> list = (List<Object[]>) this.getHibernateTemplate().execute(new HibernateCallback() {
		public Object doInHibernate(Session session) throws HibernateException,
				SQLException {
			SQLQuery query = session.createSQLQuery(sql);
			return query.list();
		}
	});
	return list;
}

 

service层的interface是这样的

public List<ShopGoods> findGoodsByDate();

service层中调用dao层findGoodsByDate()方法获取的是List<Object[]>

如何将List<Object[]>转换成List<ShopGoods>呢?

 

ShopGoods的实体类是

 

private String id;//主键id,     
private String goodsName;//商品名称,           
private String goodsPrice;//商品价格,            
private String goodsStatus;	//商品状态,            
private String goodsDate;  //商品上架的日期,
private String goodsClass;

service层的方法是

 

public List<ShopGoods> findGoodsByDate() {
	List<Object[]> list = shopGoodsDao.findGoodsByDate();
	//将返回的集合封装成list集合
	List<ShopGoods> goodsList = this.shopObjectListTOPOList(list);//抽象一个方法出去
	return goodsList;
}
	
/**值转换*/
private List<ShopGoods> shopObjectListTOPOList(List<Object[]> list) {
	List<ShopGoods> shopGoodsList = new ArrayList<ShopGoods>();
	for(int i=0; list != null && i<list.size(); i++) {
		
		Object[] objects = list.get(i);
		
		if(objects.length > 0) {
			ShopGoods shopGoods = new ShopGoods();
			for(int j=0; j<objects.length; j++) {
				shopGoods.setGoodsDate((String)objects[j]);
				shopGoods.setGoodsName((String)objects[j]);
				shopGoods.setGoodsPrice((String)objects[j]);
				shopGoods.setGoodsStatus((String)objects[j]);
				shopGoods.setId((String)objects[j]);
			}
			shopGoodsList.add(shopGoods);
		}
	}
	return shopGoodsList;
}

 

 

 

展开阅读全文

没有更多推荐了,返回首页