package dao.impl; import dao.FeedbackDao; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import pojo.Feedback; import java.io.Serializable; import java.sql.SQLException; import java.util.List; /** * User: wangyan * Date: 12-5-23 * Time: 上午10:30 */ public class FeedbackDaoImpl implements FeedbackDao { private HibernateTemplate template; private SessionFactory factory; public HibernateTemplate getTemplate() { if (template == null) { template = new HibernateTemplate(this.factory); } return template; } public void setTemplate(HibernateTemplate template) { this.template = template; } public SessionFactory getFactory() { return factory; } public void setFactory(SessionFactory factory) { this.factory = factory; } @Override public Serializable saveFeedback(Feedback feedback) { return this.getTemplate().save(feedback); } @Override public List<Feedback> getAllFeedback() { List feedbacks = this.getTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery("from Feedback "); return query.list(); } }); return feedbacks; } @Override public int getFeedbackTotalCount() { List feedbacks = this.getTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(" from Feedback"); return query.list(); } }); return feedbacks.size(); } @Override public int getFeedbackTotalPage(int pageSize) { int totalCount=this.getFeedbackTotalCount(); int totalPage=((totalCount+pageSize)-1)/pageSize; return totalPage; } @Override public List<Feedback> getFeedback(final int pageSize, final int currentPage) { List notices = this.getTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery("from Feedback "); query.setMaxResults(pageSize); query.setFirstResult(pageSize*(currentPage-1)); return query.list(); } }); return notices; } @Override public Feedback getOneFeedbackByID(final int id) { List feedbacks = this.getTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery("from Feedback as f where f.id= :id").setInteger("id", id); return query.list(); } }); if(feedbacks==null) return null; Feedback feedback= (Feedback) feedbacks.get(0); return feedback; } @Override public void deleteOneFeedbackByID(final int id) { List feedbacks = this.getTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery("from Feedback as f where f.id= :id").setInteger("id", id); return query.list(); } }); Feedback feedback= (Feedback) feedbacks.get(0); this.getTemplate().delete(feedback); } }