由于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);
}
}