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 findGoodsByDate() {
	final String sql = "SELECT * FROM (SELECT  o.* FROM shop_goods o ORDER BY o.goods_date DESC ) e LIMIT 3";
	//执行sql语句
	List list = (List) 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 findGoodsByDate();

service层中调用dao层findGoodsByDate()方法获取的是List

如何将List转换成List呢?

 

ShopGoods的实体类是

 

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

service层的方法是

 

public List findGoodsByDate() {
	List list = shopGoodsDao.findGoodsByDate();
	//将返回的集合封装成list集合
	List goodsList = this.shopObjectListTOPOList(list);//抽象一个方法出去
	return goodsList;
}
	
/**值转换*/
private List shopObjectListTOPOList(List list) {
	List shopGoodsList = new ArrayList();
	for(int i=0; list != null && i 0) {
			ShopGoods shopGoods = new ShopGoods();
			for(int j=0; j

 

 

 

你可能感兴趣的:(hibernate,hql,sql,程序员,技术,算法)