[使用心得]maven2之m2eclipse使用手册之四编写通用Dao实例(二)
由于msn有字数限制所以只能分批贴,请见谅
公共Dao层部分:
BasicDaoIf:通用dao层接口,由于是基于1.0版本难免有点bug还没修正,请勉强参考,这里只是贴出测试部分的代码与所调用的方法,T必须是继承了JavaBean的类型,也就是实现了序列化,PK则为可以序列化的类型,如Integer
/** * * 项目名称:通用dao层 * 类名称:BasicDao * 类描述: * @param T 继承了JavaBean的序列化实体 * @param PK 实现了Serializable 接口的类型如 Integer,String * 创建人:Edward * 创建时间:2010-2-12 下午07:07:25 * 修改人:Edward * 修改时间:2010-4-47 下午07:07:25 * 修改备注: 增删改查方法 * @version 1.2 * */ public interface BasicDaoIf<T extends JavaBean,PK extends Serializable> { /** * 查找当前实体所有记录 * @param entityClass 实体类的对应的class 必须继承JavaBean实现了序列化 * @return List<T> 返回对应的实体集合 * example: List<User> list =this.findAll(User.class); * */ List<T> findAll(final Class<T> entityClass); }
AbstarctBasicDao:把经常要处理的部分抽出来作为公共类
public abstract class AbstractBasicDao<T extends JavaBean, PK extends Serializable> extends BasicSupportDao implements BasicDaoIf<T, PK> { @SuppressWarnings("unchecked") @Override public List<T> findAll(final Class<T> entityClass) { return getHibernateTemplate().findByCriteria( DetachedCriteria.forClass(entityClass)); } }
BasicDaoImpl:由于spring中使用注解的话会实例化AbstractBasicDao,因为是抽象的不能实例化所以只能新建多一个类用于继承抽象类,当然也可以把抽象类写成class.只要继承后直接覆盖方法即可
public class BasicDaoImpl<T extends JavaBean, PK extends Serializable> extends
AbstractBasicDao<T, Serializable> {
@Override
public List<T> findAll(Class<T> entityClass) {
return super.findAll(entityClass);
}
}
BasicSupportDao:如果使用spring的注解的话会造成找不到hibernatetemplate,所以需要独立写一个类进行注入,(在spring3.0.x之后这个可以不需要了,因为有了新特性@bean的注解)
public class BasicSupportDao extends HibernateDaoSupport {
@Resource(name = "hibernateTemplate")
public void setHibernatetemplate(HibernateTemplate hibernateTemplate) {
super.setHibernateTemplate(hibernateTemplate);
}
}