项目中三大框架整合的BaseDao接口及其实现

    xiaoxiao2021-03-26  19

    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>.java

    package 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(); } }

    转载请注明原文地址: https://ju.6miu.com/read-658670.html

    最新回复(0)