dao数据操作的隔离层,基类因该包含所有的基本增删改查。关于这样的设计有好多中方式,最常用的就是设计为接口,但是子类依然还是要编写各自的最基本的增删改查,比较繁琐,个人比较喜欢下面的这个方法,子类中只要实现各自特色,基本的增删改查交给基类BaseDao<T>。
public class BaseDao<T> {
@Autowired
private HibernateTemplate hibernateTemplate;
private Class entityClass;
public BaseDao(){ //在子类中通过反射找回父类具体泛型类型对应的对象
Type genType = getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
entityClass = (Class) params[0];
}
public T get(Serializable id){
return (T)hibernateTemplate.get(entityClass, id);
}
public void save(T entity){
hibernateTemplate.save(entity);
}
public void update(T entity){
hibernateTemplate.update(entity);
}
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
}