SSH BaseDaoImpl的一般写法

来源:互联网 发布:php直播间源码 编辑:程序博客网 时间:2024/05/17 07:42
import java.lang.reflect.ParameterizedType;import java.util.Collections;import java.util.List;import javax.annotation.Resource;import org.hibernate.SessionFactory;import org.hibernate.classic.Session;@SuppressWarnings("all")public class BaseDaoImpl<T> implements BaseDao<T> {    private Class<T> clazz;    public Class<T> getClazz(){        ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();        return (Class<T>) pt.getActualTypeArguments()[0];    }    public BaseDaoImpl(){        ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();        this.clazz = (Class<T>) pt.getActualTypeArguments()[0];    }    @Resource    private SessionFactory sessionFactory;    protected Session getSession() {        return sessionFactory.getCurrentSession();    }    @Override    public void save(T entity) {        getSession().save(entity);    }    @Override    public void delete(Long id) {        Object obj = getById(id);        if (obj != null)            getSession().delete(obj);    }    @Override    public void update(T entity) {        getSession().update(entity);    }    @Override    public T getById(Long id) {        return (T) getSession().get(clazz, id);    }    @Override    public List<T> getByIds(Long[] ids) {        if (ids == null || ids.length == 0) {            return Collections.EMPTY_LIST;        }        String hql = " FROM " + clazz.getSimpleName() + " WHERE id IN(:ids)";        return getSession().createQuery(hql).setParameterList("ids", ids).list();    }    @Override    public List<T> findAll() {        String hql = " FROM " + clazz.getSimpleName();        return getSession().createQuery(hql).list();    }}
0 0
原创粉丝点击