自己用Spring加Hibernate做了个通用的BaseDao接口和实现类,供大家参考。自己用了一段时间,感觉还行,希望对大家有用。也欢迎大家进行扩充和改进。 接口: package com.newboy.dao; import java.io.Serializable; import java.util.List; /** * 定义通用的接口方法,可以根据实际实际进行一些变动,做为所有Dao接口的父接口继承就可以了 * * @author newboy * @param <T> */ public interface IBaseDao<T> { public Serializable save(T entity); public void delete(Class<T> entity, Serializable id); public void update(T entity); /** * 查找所有对象,封装成List对象 * * @param entity 类的字符串形式 * @return */ @SuppressWarnings("unchecked") public List<T> findAll(Class<T> entity); /** * 根据属性查找对象 * * @param entity 对象的字符串 * @param propertyName 属性名 * @param value 属性的值 * @return 找到的List集合对象 */ @SuppressWarnings("unchecked") public List<T> findByProperty(String entity, String propertyName, Object value); /** * 根据主键找对象 * * @param entity * @param id * @return */ @SuppressWarnings("unchecked") public T findById(Class<T> entity, Serializable id); /** * 查一页的数据 * * @param firstResult * @param maxResults * @return */ @SuppressWarnings("unchecked") public List<T> findOnePage(Class<T> entity, final int firstResult, final int maxResults); } 实现类: package com.newboy.dao.impl; import java.io.Serializable; import java.util.List; import org.hibernate.criterion.DetachedCriteria; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.accp.dao.IBaseDao; /** * 一个通用的BaseDao,做为所有Dao实现类的父类 * * @author 夜光寒 */ public class BaseDaoImpl<T> extends HibernateDaoSupport implements IBaseDao<T> { public Serializable save(T entity) { return getHibernateTemplate().save(entity); } @SuppressWarnings("unchecked") public void delete(Class<T> entity, Serializable id) { T instance = (T) getHibernateTemplate().get(entity, id); if (instance != null) { getHibernateTemplate().delete(instance); } } public void update(T entity) { getHibernateTemplate().update(entity); } /** * 查找所有对象,封装成List对象 * * @param entity 类的字符串形式 * @return */ @SuppressWarnings("unchecked") public List<T> findAll(Class<T> entity) { return getHibernateTemplate().loadAll(entity); } /** * 根据属性查找对象 * * @param entity 对象的字符串 * @param propertyName 属性名 * @param value 属性的值 * @return 找到的List集合对象 */ @SuppressWarnings("unchecked") public List<T> findByProperty(String entity, String propertyName, Object value) { final String queryString = "select e from " + entity + " e where e." + propertyName + "= :propertyValue"; return getHibernateTemplate().findByNamedParam(queryString, "propertyValue", value); } /** * 根据主键找对象 * * @param entity * @param id * @return */ @SuppressWarnings("unchecked") public T findById(Class<T> entity, Serializable id) { return (T) getHibernateTemplate().get(entity, id); } /** * 查一页的数据 * * @param firstResult * @param maxResults * @return */ @SuppressWarnings("unchecked") public List<T> findOnePage(Class<T> entity, final int firstResult, final int maxResults) { DetachedCriteria criteria = DetachedCriteria.forClass(entity); return super.getHibernateTemplate().findByCriteria(criteria, firstResult, maxResults); } }