www.pudn.com > j2EEnews_struts_hibernate_spring.rar > TypeDao.java


package com.news.dao.impl; 
 
import java.sql.SQLException; 
import java.util.Date; 
import java.util.List; 
 
import org.hibernate.Query; 
import org.hibernate.classic.Session; 
import org.springframework.orm.hibernate3.HibernateCallback; 
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 
 
import com.news.bean.Newtype; 
import com.news.dao.ItypeDao; 
import com.news.page.Page; 
import com.news.struts.form.AddtypeForm; 
import com.news.utils.GetDate; 
import com.news.utils.GetId; 
 
 
public class TypeDao extends HibernateDaoSupport implements ItypeDao{ 
	 
	/** 
	 * 增加新的新闻种类 
	 */ 
	public void addType(AddtypeForm addtypeForm){ 
		Newtype newtype = new Newtype(); 
		Date d = new Date(); 
		newtype.setId(GetId.getId()); 
		newtype.setNewtypetitle(addtypeForm.getNewtypetitle()); 
		newtype.setTypeauthor(addtypeForm.getTypeauthor()); 
		newtype.setNewtypedate(GetDate.getDate1(d)); 
		newtype.setDate2(GetDate.getDate2(d)); 
		getHibernateTemplate().save(newtype); 
	} 
	 
	/** 
	 * 修改新闻种类 
	 */ 
	public void changeType(AddtypeForm addtypeForm){ 
		String id = addtypeForm.getId(); 
		Newtype newtype = (Newtype) getHibernateTemplate().load(Newtype.class,id); 
		addtypeForm.setId(newtype.getId()); 
		addtypeForm.setNewtypetitle(newtype.getNewtypetitle()); 
		addtypeForm.setTypeauthor(newtype.getTypeauthor()); 
	} 
	 
	/** 
	 * 修改新闻种类完成 
	 */ 
	public void changeFinType(AddtypeForm addtypeForm){ 
		String id = addtypeForm.getId(); 
		Newtype newtype = (Newtype) getHibernateTemplate().load(Newtype.class,id); 
		newtype.setNewtypetitle(addtypeForm.getNewtypetitle()); 
		//newtype.setTypeauthor(addtypeForm.getTypeauthor()); 
		getHibernateTemplate().save(newtype); 
	} 
	 
	/** 
	 * 删除新闻种类 删除种类的同时删除他的相关新闻 
	 */ 
	public void delType(AddtypeForm addtypeForm){ 
		final String id = addtypeForm.getId(); 
		Newtype newtype = (Newtype)getHibernateTemplate().load(Newtype.class,id); 
		String hql = "from News where typeid = ?"; 
		Session s = getHibernateTemplate().getSessionFactory().openSession(); 
		Query q = s.createQuery(hql); 
		q.setParameter(0,id); 
		List list = q.list(); 
		s.close(); 
		getHibernateTemplate().delete(newtype); 
		getHibernateTemplate().deleteAll(list); 
	} 
	 
	/** 
	 * 用于分页的查询 
	 */ 
	public List getList(Page page){ 
		final Page p = page; 
		return getHibernateTemplate().executeFind(new HibernateCallback() { 
			public Object doInHibernate(org.hibernate.Session s) throws org.hibernate.HibernateException, SQLException { 
				Query query = s.createQuery(p.getHql()); 
				query.setFirstResult(p.getStartRs()); 
				query.setMaxResults(p.getPerPage()); 
				List list = query.list(); 
				return list; 
			} 
		}); 
	} 
 
	public int getTotal(String hql) { 
			List result = getHibernateTemplate().find(hql); 
			if (null != result && !result.isEmpty()) { 
				return ((Integer) result.get(0)).intValue(); 
			} else { 
				return 0; 
			} 
	} 
}