标签:date 实例 swa util entity bsp lang autowired ssi
package com.esailcar.finance.common.persistence; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.sql.SQLException; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.springframework.beans.factory.annotation.Autowired; public class MyHibernateDao<T,P extends Serializable> { private Class<T> entityClass; //可以整合到Spring中,直接用Autowired注解,不需要在构造函数生成 private SessionFactory sessionFactory; @SuppressWarnings("deprecation") public MyHibernateDao() { this.entityClass=getTClass(); Configuration config=new Configuration().configure("hibernate-cfg.xml"); this.sessionFactory=config.buildSessionFactory(); } public void save(final T entity) { getSession().saveOrUpdate(entity); } public T getById(final P id) { return (T) getSession().get(entityClass, id); } public List<T> getByHql(String queryString)throws SQLException{ return getSession().createQuery(queryString).list(); } private Session getSession() { return sessionFactory.getCurrentSession(); } private Class<T> getTClass() { //获取直接超类的 Type 实例 Type superClassType=getClass().getGenericSuperclass(); try { if(superClassType instanceof ParameterizedType) { //参数化类型 ParameterizedType parameterType=(ParameterizedType) superClassType; //泛型参数的 Type 对象的数组 Type[] parameters=parameterType.getActualTypeArguments(); //返回实体类参数 return (Class<T>)parameters[0]; } } catch(Exception e) { System.out.println(e.getMessage()); } return null; } }
标签:date 实例 swa util entity bsp lang autowired ssi
原文地址:http://www.cnblogs.com/temporary/p/7827408.html