基类代码
public class GenericDaoImpl<T extends IdEntity> extends HibernateDaoSupport implements GenericDao<T>
GenericDaoImpl<T extends IdEntity> 声明继承GenericDaoImpl的类必须指定一个对象,并且这个对象必须继承IdEntity
extends HibernateDaoSupport 不多说
implements GenericDao<T> 定义了增删改的方法 并且指定的了泛型对象 其内部定义一些通用方法(curd)列:
//这就是泛型的好处,你指定哪个对象,他就让hibernate执行哪个对象的操作 void insert(T entity);
再看看如何在当前GenericDaoImpl类在被实例化后获取子类指定哪个泛型对象呢?
/** * 数据实体类型 */ protected Class<T> entityClass; /** * 默认构造函数 */ @SuppressWarnings("unchecked") public GenericDaoImpl() { Type superClassType = getClass().getGenericSuperclass(); if (superClassType instanceof ParameterizedType) { Type[] paramTypes = ((ParameterizedType) superClassType).getActualTypeArguments(); this.entityClass = (Class<T>) paramTypes[0]; } }