Struts2_Spring_Hibernate整合及测试_4(标准)_通过反射获取泛型真实类型

网友投稿 658 2022-10-14

Struts2_Spring_Hibernate整合及测试_4(标准)_通过反射获取泛型真实类型

Struts2_Spring_Hibernate整合及测试_4(标准)_通过反射获取泛型真实类型

package cn.itcast.oa.base;import java.lang.reflect.ParameterizedType;import java.util.List;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.transaction.annotation.Transactional;@SuppressWarnings("unchecked")public class BaseDaoImpl implements BaseDao { @Resource private SessionFactory sessionFactory; private Class clazz;// 这是一个问题 public BaseDaoImpl() { // 使用反射技术得到T的真实类型 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();// 获取当前new的对象的泛型的父类类型 this.clazz = (Class) pt.getActualTypeArguments()[0];// 获取第一个类型参数的真实类型 System.out.println("clazz ---> " + clazz); } /** * 获取当前可用的Session * * @return */ protected Session getSession() { return sessionFactory.getCurrentSession(); } @Transactional public void save(T entity) { getSession().save(entity); } public void delete(Long id) { Object obj = getById(id); if (obj != null) { getSession().delete(obj); } } public void update(T entity) { getSession().update(entity); } public T getById(Long id) { return (T) getSession().get(clazz, id); } public List getByIds(Long[] ids) { return getSession().createQuery(// "from " + clazz.getSimpleName() + " where id in (:ids)")// .setParameterList(":ids", ids)// .list(); } public List findAll() { return getSession().createQuery(// "from " + clazz.getSimpleName())// .list(); }}

BaseDao设计思路

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Struts2_Spring_Hibernate整合及测试_2(标准)
下一篇:表单文件域跟图像域-制用用户信息注册页面
相关文章

 发表评论

暂时没有评论,来抢沙发吧~