package dao.impl; import java.util.List; import java.util.Map; import model.Classify; import model.Product; import model.User; import model.UserAndAdmin; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import dao.IUserDao; public class UserDao extends HibernateDaoSupport implements IUserDao { /** * 发布供求信息 */ @Override public void saveProduct(Product product) { this.getHibernateTemplate().saveOrUpdate (product); } /** * 查询分类列表 */ @SuppressWarnings("unchecked") @Override public List searchClassifyList() { String hql="from Classify"; return this.getHibernateTemplate().find(hql); } /** * 查询商品 */ @SuppressWarnings("unchecked") @Override public List searchProductList(Map map) { String proName=map.get("keyword");//输入框输入 String cid=map.get("cid");//分类 String condition=map.get("conditon");//按人气或价格升、降或供、求查询 //DetachedCriteria 是离线的,创建时无需 Session,DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName(Name) 进行DetachedCriteria 实例的创建。 //Spring 的框架提供了getHibernateTemplate ().findByCriteria(detachedCriteria) 方法可以很方便地根据DetachedCriteria 来返回查询结 果。 DetachedCriteria dc=DetachedCriteria.forClass(Product.class); //dc.addOrder(Order.desc("createTime")); //dc.add(Restrictions.ne("proHassum", 0)); if(proName!=null){ proName="%"+map.get("keyword")+"%"; dc.add(Restrictions.like("proName",proName, MatchMode.ANYWHERE)); } if(cid!=null){ dc.add(Restrictions.eq("classify.cid",Integer.parseInt(cid))); } if(condition!=null){ int con=Integer.parseInt(condition); switch(con){ case 5: dc.add(Restrictions.eq("type",1)); break; case 4: dc.add(Restrictions.eq("type",0)); break; /*case "1": dc.addOrder(Order.desc("proClicknum")); break;*/ case 2: dc.addOrder(Order.asc("sep")); break; case 3: dc.addOrder(Order.desc("sep")); break; } } List list=this.getHibernateTemplate().findByCriteria(dc,Integer.parseInt(map.get("begin")),Integer.parseInt(map.get("pageSize"))); return list; } /** * 查询商品数量 */ @SuppressWarnings("unchecked") @Override public int searchProductCount(Map map) { StringBuffer br=new StringBuffer(); StringBuffer order=new StringBuffer(); String proName=map.get("keyword"); String cid=map.get("cid"); String condition=map.get("conditon"); String count_hql="select count(*) from Product where 1=1"; if(proName!=null){ proName="%"+map.get("keyword")+"%"; br.append(" and proName like '"+proName+"'"); } if(cid!=null){ br.append(" and classify.cid='"+Integer.parseInt(cid)+"'"); } if(condition!=null){ order.append(" order by createTime DESC"); int con=Integer.parseInt(condition); switch(con){ /*case 1: order.append(" ,proClicknum DESC"); break;*/ case 2: order.append(" ,proPrice ASC"); break; case 3: order.append(" ,proPrice DESC"); break; case 4: br.append(" and type=0"); break; case 5: br.append(" and type=1"); break; } } List list=this.getHibernateTemplate().find(count_hql+br.toString()+order.toString()); if(list.size()>0){ return list.get(0).intValue(); } return 0; } /** * 查询商品详情 */ @SuppressWarnings("unchecked") @Override public Product getProductDetail(String id) { int pid=0; if(id!=null&&id!=""){ pid=Integer.parseInt(id); } String hql=" from Product where id=?"; List list=this.getHibernateTemplate().find(hql,pid); if(list.size()>0){ Product p=list.get(0); return p; } return null; } @Override public Classify getClassifyById(Integer classifyId) { String hql="from Classify where cid=?"; @SuppressWarnings("unchecked") List c=this.getHibernateTemplate().find(hql, classifyId); if(c.size()>0){ Classify cla=c.get(0); return cla; } return null; } @Override public User getUserById(Integer creatorId) { String hql="from User where uid=?"; @SuppressWarnings("unchecked") List u=this.getHibernateTemplate().find(hql, creatorId); if(u.size()>0){ User user=u.get(0); return user; } return null; } @Override public void updateProduct(Product product) { this.getHibernateTemplate().update(product); } /** *

Description: 查询我发布的商品列表数量

* @param parseInt * @return */ @Override public int searchMyProductCount(int uid) { String hql="select count(*) from Product where user.uid = ?"; List list=this.getHibernateTemplate().find(hql,uid); if(list.size()>0){ return list.get(0).intValue(); } return 0; } /** *

Description: 查询我发布的商品列表信息

* @param map * @return */ @Override public List getMyProductList(Map map) { DetachedCriteria dc=DetachedCriteria.forClass(model.Product.class); dc.add(Restrictions.eq("user.uid",Integer.parseInt(map.get("userId")))); dc.addOrder(Order.desc("createTime")); List list=this.getHibernateTemplate().findByCriteria(dc,Integer.parseInt(map.get("begin")),Integer.parseInt(map.get("pageSize"))); return list; } /** *

Description: 删除我发布的商品

* @param pid */ @Override public void delectProductById(int pid) { Product product=this.getHibernateTemplate().get(Product.class, pid); if(product!=null){ this.getHibernateTemplate().delete(product); } } /** *

Description: 保存用户消息

* @param map * @return */ @Override public void saveUserMessage(UserAndAdmin uaa) { this.getHibernateTemplate().save(uaa); } @Override public int searchMessageCount(int uid, String flag) { StringBuffer sb=new StringBuffer(); String hql="select count(*) from UserAndAdmin where 1=1 "; if(flag=="0"||"0".equals(flag)){ sb.append(" and status='0' and userId="+uid); }else{ sb.append(" and status='1' and userId="+uid); } List list=this.getHibernateTemplate().find(hql+sb.toString()); if(list.size()>0){ return list.get(0).intValue(); } return 0; } @Override public List getMessageList(Map map) { DetachedCriteria dc=DetachedCriteria.forClass(model.UserAndAdmin.class); String flag=map.get("flag"); if(flag=="0"||"0".equals(flag)){ dc.add(Restrictions.eq("userId",Integer.parseInt( map.get("userId")))); dc.add(Restrictions.eq("status",0)); }else{ dc.add(Restrictions.eq("userId",Integer.parseInt( map.get("userId")))); dc.add(Restrictions.eq("status",1)); } List list=this.getHibernateTemplate().findByCriteria(dc,Integer.parseInt(map.get("begin")),Integer.parseInt(map.get("pageSize"))); return list; } /** * 通过id删除消息 */ @Override public void deleteMessage(int id) { String hql="delete from UserAndAdmin where id="+id; SessionFactory factory=this.getHibernateTemplate().getSessionFactory(); Session session=factory.openSession(); Query query=session.createQuery(hql); query.executeUpdate(); session.close(); } }