package com.yys.dao.impl;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import com.yys.dao.BaseDao;
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl<T> implements BaseDao<T> {
private Class<T> clazz;
@Resource
private SessionFactory sessionFactory;
protected BaseDaoImpl() {
ParameterizedType type=(ParameterizedType) this.getClass().getGenericSuperclass();
clazz=(Class<T>) type.getActualTypeArguments()[0];
}
@Override
public void saveEntity(T t) throws Exception {
this.sessionFactory.getCurrentSession().save(t);
}
@Override
public void deleteEntity(T t) throws Exception {
this.sessionFactory.getCurrentSession().delete(t);
}
@Override
public void updateEntity(T t) throws Exception {
this.sessionFactory.getCurrentSession().update(t);
}
@Override
public void saveOrUpdate(T t) throws Exception {
this.sessionFactory.getCurrentSession().saveOrUpdate(t);
}
@Override
public void batchEntityByHql(String Hql, Object... objects)
throws Exception {
Query query=this.sessionFactory.getCurrentSession().createQuery(Hql);
for(int i=0;i<objects.length;i++){
query.setParameter(i, objects[i]);
}
query.executeUpdate();
}
@Override
public T getEntity(Integer id) {
return (T) this.sessionFactory.getCurrentSession().get(clazz,id);
}
@Override
public T loadEntity(Integer id) {
return (T) this.sessionFactory.getCurrentSession().load(clazz, id);
}
@Override
public List<T> findEntityByHQL(String Hql, Object... objects) {
Query query=this.sessionFactory.getCurrentSession().createQuery(Hql);
for(int i=0;i<objects.length;i++){
query.setParameter(i, objects[i]);
}
return query.list();
}
}