package com.jshop.dao.impl; import java.sql.SQLException; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; import com.jshop.dao.GroupCartDao; import com.jshop.entity.CartT; import com.jshop.entity.GroupCartT; @Repository("groupCartDao") public class GroupCatTDaoImpl extends HibernateDaoSupport implements GroupCartDao { private static final Log log = LogFactory.getLog(CartTDaoImpl.class); @Override public List<GroupCartT> findGroupById(final String cartid) { try { String queryString ="from GroupCartT as gt where gt.cartid=:cartid"; List<GroupCartT> list=this.getHibernateTemplate().findByNamedParam(queryString, "cartid", cartid); if(list!=null){ return list; } return null; } catch (DataAccessException e) { throw e; } } @Override public int addgroupcart(GroupCartT gc) { try { this.getHibernateTemplate().save(gc); return 1; } catch (DataAccessException e) { throw e; } } @Override public int delGroupCart(final String cartid) { final String queryString="delete from GroupCartT as gt where gt.cartid=:cartid"; try { this.getHibernateTemplate().execute(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { int i=0; Query query = session.createQuery(queryString); query.setParameter("cartid",cartid); i=query.executeUpdate(); if(i>0){ return i; }else{ return 0; } } }); } catch (DataAccessException e) { throw e; } return 0; } @Override public List<GroupCartT> findAllGroupCartByUserId(String userid) { log.debug("find all GroupCartT "); try { String queryString = "from GroupCartT as c where c.userid=:userid and c.state='1' order by addtime desc"; List<GroupCartT> list = this.getHibernateTemplate().findByNamedParam(queryString, "userid", userid); if (list != null) { return list; } return null; } catch (RuntimeException re) { log.error("find all GroupCartT error", re); throw re; } } @Override public List<GroupCartT> findgroupCartByCartid(String cartid, String state) { try { String queryString="from GroupCartT as gct where gct.cartid=:cartid and gct.state=:state "; List<GroupCartT> list = this.getHibernateTemplate().findByNamedParam(queryString, new String[]{"cartid","state"}, new Object[]{cartid,state}); return list; } catch (DataAccessException e) { throw e; } } public int updateGroupCartStateandOrderidByGoodsidList(final String cartid, final String orderid, final String userid, final String state) { try { final String queryString = "update GroupCartT as c set c.state=:state,c.orderid=:orderid where c.userid=:userid and c.cartid=:cartid"; this.getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(queryString); int i = 0; query.setParameter("orderid", orderid); query.setParameter("userid", userid); query.setParameter("cartid", cartid); query.setParameter("state", state); i = query.executeUpdate(); return i; } }); } catch (RuntimeException re) { log.error("UpdateCartStateandOrderidByGoodsidList cart failed", re); throw re; } return 0; } @Override public List<GroupCartT> findGroupCartGoodsByOrderid(String orderid) { log.debug("find all findGroupCartGoodsByOrderid "); try { String queryString = "from GroupCartT as c where c.orderid=:orderid and c.state='3' order by addtime desc"; List<GroupCartT> list = this.getHibernateTemplate().findByNamedParam(queryString, "orderid", orderid); if (list != null && list.size() > 0) { return list; } return null; } catch (RuntimeException re) { log.error("find all findGroupCartGoodsByOrderid error", re); throw re; } } @Override public int updateGroupCartStateByGoodsId(final String goodsid,final String state) { try { final String queryString ="update GroupCartT as gct set gct.state=:state where gct.goodsid=:goodsid"; this.getHibernateTemplate().executeFind(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { int i=0; Query query = session.createQuery(queryString); query.setParameter("state", state); query.setParameter("goodsid",goodsid); i=query.executeUpdate(); i++; return i; } }); } catch (DataAccessException e) { throw e; } return 0; } }