package com.test.dao;
import java.util.List;
/**
* BaseDao接口
* @author 胡勇
* @ 2017下午8:27:03
* @version 1.0
* @param <T>
*/
public interface BaseDao<T> {
/**
* 添加
*/
void add(T t);
/**
* 修改
*/
void update(T t);
/**
* 删除
*/
void delete(T t);
/**
* 根据id查询
*/
T findOne(int id);
/**
* 查询所有
*/
List<T> findAll();
}
package com.test.dao;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
/**
* BaseDao的实现类
* @author 胡勇
* @ 2017下午8:27:30
* @version 1.0
* @param <T>
*/
public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {
private Class pclass;
public BaseDaoImpl() {
// 得到当前运行的Class
Class clazz = this.getClass();
// 得到当前运行类的父类的参数化类型
ParameterizedType parameterizedType = (ParameterizedType) clazz
.getGenericSuperclass();
// 得到父类的实际类型参数
Type[] types = parameterizedType.getActualTypeArguments();
// 得到Class
pclass = (Class) types[0];
}
public void add(T t) {
this.getHibernateTemplate().save(t);
}
public void update(T t) {
this.getHibernateTemplate().update(t);
}
public void delete(T t) {
this.getHibernateTemplate().delete(t);
}
@SuppressWarnings("all")
public T findOne(int id) {
return (T) this.getHibernateTemplate().get(pclass, id);
}
@SuppressWarnings("all")
public List<T> findAll() {
return (List<T>) this.getHibernateTemplate().find(
"from " + pclass.getSimpleName());
}
}
|
|