首页 > 代码库 > (六)编写基类BaseDao
(六)编写基类BaseDao
DAO基类中配备增删改查的操作。
1 public interface BaseDao<T> { 2 //新增 3 public void save(T entity); 4 //更新 5 public void update(T entity); 6 //根据id删除 7 public void delete(Serializable id); 8 //根据id查找 9 public T findObjectById(Serializable id);10 //查找列表11 public List<T> findObjects();12 }
1 public abstract class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> { 2 3 Class<T> clazz; 4 5 public BaseDaoImpl(){ 6 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); //BaseDaoImpl<user> 7 clazz = (Class<T>) pt.getActualTypeArguments()[0]; 8 } 9 10 public void save(T entity) {11 getHibernateTemplate().save(entity);12 13 }14 15 public void update(T entity) {16 getHibernateTemplate().update(entity);17 18 }19 20 public void delete(Serializable id) {21 getHibernateTemplate().delete(findObjectById(id));22 23 }24 25 public T findObjectById(Serializable id) {26 27 return getHibernateTemplate().get(clazz,id);28 }29 30 public List<T> findObjects() {31 Query query = getSession().createQuery("FROM "+clazz.getSimpleName());32 return query.list();33 }34 35 }
获取泛型类型:
// 使用反射得到T的真实类型
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); // 获取当前new的对象的 泛型的父类 类型
this.clazz = (Class<T>) pt.getActualTypeArguments()[0]; // 获取第一个类型参数的真实类型
}
(六)编写基类BaseDao
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。