版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37404150/article/details/85005290
package pers.dov.bos.dao.base.impl;
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.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import pers.dov.bos.dao.base.IBaseDao;
/**
*
* @author Dovahkiin_
*
* @param <T>
*/
public class BaseDaoImpl<T> extends HibernateDaoSupport implements IBaseDao<T>{
//实体类型
private Class<T> entityClass;
//使用注解方式进行依赖注入
@Resource
public void setMySessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
//在构造方法中动态的获得操作的实体类型
public BaseDaoImpl() {
ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
Type[] actualTypeArguments = genericSuperclass.getActualTypeArguments();
entityClass = (Class<T>) actualTypeArguments[0];
}
@Override
public void save(T entity) {
this.getHibernateTemplate().save(entity);
}
@Override
public void delete(T entity) {
this.getHibernateTemplate().delete(entity);
}
@Override
public void update(T entity) {
this.getHibernateTemplate().update(entity);
}
@Override
public T findById(Serializable id) {
return this.getHibernateTemplate().get(entityClass, id);
}
@Override
public List<T> findAll() {
String hql = "FROM" + entityClass.getSimpleName();
return this.getHibernateTemplate().find(hql);
}
}