BaseDao<T>.java
package cn.itcast.core.dao;import java.io.Serializable;import java.util.List;public interface BaseDao<T> { //新增 public void save(T entity); //更新 public void update(T entity); //根据id删除 public void delete(Serializable id); //根据id查找 public T findObjectById(Serializable id); //查找列表 public List<T> findObjects(); }BaseDaoImpl<T>.javapackage cn.itcast.core.dao.impl;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.List;import org.hibernate.Query;import org.sPRingframework.orm.hibernate3.support.HibernateDaoSupport;import cn.itcast.core.dao.BaseDao;public abstract class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> { Class<T> clazz; //泛型中T的类类型 public BaseDaoImpl(){//把泛型中的T给确定 //this.getClass()取到的类是被实例化的那个类 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();//BaseDaoImpl<User> clazz = (Class<T>)pt.getActualTypeArguments()[0];//为什么是数组,因为可能是<T,E>的形式 } @Override public void save(T entity) { getHibernateTemplate().save(entity); } @Override public void update(T entity) { getHibernateTemplate().update(entity); } @Override public void delete(Serializable id) { getHibernateTemplate().delete(findObjectById(id)); } @Override public T findObjectById(Serializable id) { return getHibernateTemplate().get(clazz, id); } @Override public List<T> findObjects() { Query query = getsession().createQuery("FROM "+clazz.getSimpleName());//hql return query.list(); }}
新闻热点
疑难解答