Hibernate Dao映射配置通用接口類反射獲取加載calass實例
阿新 • • 發佈:2018-09-28
emp pda package cti nbsp from pes framework .get public List<T> findByPage(DetachedCriteria detachedCriteria,Integer begin,Integer pageSize);} private Class clazz; public BaseDaoImpl() { //獲取子類 Class clazz = this.getClass(); //反射加載父類,獲取參數化類型 Type type = clazz.getGenericSuperclass(); //獲取實際類型參數 ParameterizedType pType = (ParameterizedType) type; Type[] types = pType.getActualTypeArguments(); //設置clazz this.clazz = (Class) types[0]; } public void save(T t) { this.getHibernateTemplate().save(t); } public void delete(T t) { this.getHibernateTemplate().delete(t); } public void update(T t) { this.getHibernateTemplate().update(t); } public T findById(Serializable id) { return (T) this.getHibernateTemplate().get(clazz, id); } public List<T> findAll() { return (List<T>) this.getHibernateTemplate().find("from "+clazz.getSimpleName()); } public Integer findCount(DetachedCriteria detachedCriteria) { detachedCriteria.setProjection(Projections.rowCount()); List<Long> list = (List<Long>) this.getHibernateTemplate().findByCriteria(detachedCriteria); if (list.size()>0) { return list.get(0).intValue(); } return 0; } public List<T> findByPage(DetachedCriteria detachedCriteria,Integer begin,Integer pageSize) { detachedCriteria.setProjection(null); return (List<T>) this.getHibernateTemplate().findByCriteria(detachedCriteria, begin, pageSize); }}
接口:
package com.ph.dao;
import java.io.Serializable;import java.util.List;import org.hibernate.criterion.DetachedCriteria;public interface BaseDao<T> { public void save(T t); public void delete(T t); public void update(T t); public T findById(Serializable id); public List<T> findAll(); public Integer findCount(DetachedCriteria detachedCriteria);
接口實現類:
package com.ph.dao.impl;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Projections;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import com.ph.dao.BaseDao;public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {
Hibernate Dao映射配置通用接口類反射獲取加載calass實例