package com.tencent.dao.impl; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Query; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.tencent.dao.IDao; public class DAOImpl<T> extends HibernateDaoSupport implements IDao<T> { public static Logger log = Logger.getLogger(DAOImpl.class); @Override public T findById(Class<T> clazz, int id) { return (T) this.getHibernateTemplate().get(clazz, id); } @Override public int save(T baseBean) { return (Integer) this.getHibernateTemplate().save(baseBean); } @Override public void delete(T baseBean) { this.getHibernateTemplate().delete(baseBean); } @Override public void update(T baseBean) { this.getHibernateTemplate().update(baseBean); } public int getRowCount(String entityName) { String hql = "select count(*) from " + entityName; Iterator<?> iterator = this.getHibernateTemplate().iterate(hql); if (iterator.hasNext()) return ((Long) iterator.next()).intValue(); return 0; } @Override public List<?> list(String hql) { return this.getHibernateTemplate().find(hql); } @Override public List<?> list(String hql, int firstResult, int maxResults, Object... params) { Query query = this.getSession().createQuery(hql); for (int i = 0; params != null && i < params.length; i++) { query.setParameter(i, params[i]); } List<?> list = query.setFirstResult(firstResult) .setMaxResults(maxResults).list(); return list; } public T getIndex(String entity, int index){ String hql = "select from " + entity; @SuppressWarnings("unchecked") List<T> list = (List<T>) this.list(hql, index, 1); return (T) list.get(0); } }