dishhibernatedao.java.svn-base

来自「spring+hibernate做的网上订餐系统」· SVN-BASE 代码 · 共 177 行

SVN-BASE
177
字号
package com.pure.dao.hibernate;

import java.sql.SQLException;
import java.util.List;
import java.util.Set;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;

import com.pure.dao.DishDAO;
import com.pure.domain.Dish;
import com.pure.domain.Image;
import com.pure.page.Page;
import com.pure.sys.Application;
import com.pure.sys.Constant;
import com.pure.util.PureUtil;

/**
 * 菜品DAO接口实现类
 * 
 * @author pure
 * 
 */
public class DishHibernateDAO extends BaseDao implements DishDAO {
	protected final Log logger = LogFactory.getLog(getClass());

	public void insertDish(Dish dish) throws DataAccessException {
		this.getHibernateTemplate().save(dish);
	}

	// TODO 这里需要注意一下,关于merge方法
	public void updateDish(Dish dish) throws DataAccessException {
		this.getHibernateTemplate().merge(dish);
	}

	public List getDishList(final Page page) {
		return getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session s) throws HibernateException,
					SQLException {
				Query query = s.createQuery(page.getHql());
				query.setFirstResult(page.getStartRs());
				query.setMaxResults(page.getPerPage());
				List list = query.list();
				return list;

			}
		});
	}

	public List getDishList(final int num, final String hql) {
		return getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session s) throws HibernateException,
					SQLException {
				Query query = s.createQuery(hql);
				query.setFirstResult(0);
				query.setMaxResults(num);
				List list = query.list();
				return list;

			}
		});
	}

	public List FindByDish(final Page page, final Dish dish) {
		return getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session s) throws HibernateException,
					SQLException {
				Criteria cr = s.createCriteria(Dish.class);
				cr.add(Expression.like("name", "%" + dish.getName() + "%"));
				cr.setFirstResult(page.getStartRs());
				cr.setMaxResults(page.getPerPage());
				List list = cr.list();
				return list;
			}
		});
	}

	public Dish getDish(final int id) {
		List dataList = this.getHibernateTemplate().find("from Dish dish where dish.id = ?", new Long(id));
		if (dataList.size() == 0) {
			return null;
		} else {
			return (Dish) dataList.get(0);
		}
	}

	public void delDish(final int id) {
		getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session s) throws HibernateException,SQLException {
				Query query = s.createQuery("delete Dish where id=:id");
				query.setInteger("id", id);
				query.executeUpdate();
				return null;
			}
		});
	}

	public int getTotalByDish(final Dish dish) {
		return getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session s) throws HibernateException,SQLException {
				Criteria cr = s.createCriteria(Dish.class);
				cr.add(Expression.like("name", "%" + dish.getName() + "%"));
				List list = cr.list();
				return list;
			}
		}).size();
	}

	public void hot(final int id) {
		getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session s) throws HibernateException,SQLException {
				Query query = s.createQuery("update Dish set hot = hot+1 where id=:id");
				query.setInteger("id", id);
				query.executeUpdate();
				return null;
			}
		});
	}

	/**
	 * 取出指定ID菜品的所有图片
	 */
	public List getDishImages(int id) {
		String hql = "select image.id,image.name,image.newname,image.size from Image as image where image.dish.id="+id;
		return this.getHibernateTemplate().find(hql);
	}
	
	public Image getImage(int id){
		List dataList = this.getHibernateTemplate().find("from Image image where image.id = ?", new Long(id));
		if (dataList.size() == 0) {
			return null;
		} else {
			return (Image) dataList.get(0);
		}
	}
	
	public Set findDishImages(int id){
		/*String hql = "select image.id,image.name,image.newname,image.size from Image as image where image.dish.id="+id;
		List images = this.getHibernateTemplate().find(hql);
		Set imagesSet = new HashSet();
		for (Iterator iter = images.iterator(); iter.hasNext();) {
			imagesSet.add((Image)iter.next());
		}
		return imagesSet;*/
		return null;
	}
	
	public void delImage(int id){
		Image image = getImage(id);
		if(image!=null){
			PureUtil.delFile(Application.realPath+Constant.IMAGE_UPLOADPATH+image.getNewname());
			this.getHibernateTemplate().delete(image);
			this.getHibernateTemplate().flush();
		}
	}
	
	public List getHotDish(){
		return getHibernateTemplate().executeFind(new HibernateCallback() {
			public Object doInHibernate(Session s) throws HibernateException,SQLException {
				Query query = s.createQuery(" from Dish as dish order by hot desc");
				query.setFirstResult(0);
				query.setMaxResults(4);
				List list = query.list();
				return list;
			}
		});
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?