import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import com.fengyi.dao.IBaseDao;
import com.fengyi.util.PageUtil;
@Repository(value="baseDao")
@SuppressWarnings("unchecked")
public class BaseDao<T> extends HibernateDaoSupport implements IBaseDao<T> {
private Class<T> clzz;
@Resource(name = "sessionFactory")
public void setSuperSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
// 獲取泛型的Class對象
private Class<T> getClzz() {
clzz = (Class<T>) getClass();
while (clzz != null && clzz != Object.class) {
Type t = clzz.getGenericSuperclass();
if (t instanceof ParameterizedType) {
Type[] args = ((ParameterizedType) t).getActualTypeArguments();
if (args[0] instanceof Class) {
this.clzz = (Class<T>) args[0];
break;
}
}
clzz = (Class<T>) clzz.getSuperclass();
}
return clzz;
}
}
..........