在Sping和hibernate的整合当中,经常用到泛型DAO。泛型DAO涉及到一个问题,就是泛型父类怎么得到实际的实体类型的.class。
在网上找到一个代码,可以借鉴一下:
this.entityClass = null;
Class c = this.getClass();
Type t = c.getGenericSuperclass();
if (t instanceof ParameterizedType) {
Type[] p = ((ParameterizedType) t).getActualTypeArguments();
this.entityClass = (Class<T>) p[0];
}
this.getClass,将会返回实例化子类的Class对象。有人和奇怪,为什会他会返回子类的实例。我的理解是,this在java中始终代表该类的实例化对象的引用,而我们一般是先创建一个具体的子类去继承泛型超类,而且也是实例化子类,所以this自然就代表了子类的引用。所以this.getClass()返回的自然就是子类的Class对象了。
而c.getGenericSuperclass();用来返回表示当前Class 所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果超类是泛型的,那么他同时会返回泛型参数类型。
t instanceof ParameterizedType意思是判断t是不是支持泛型,如果t实现了ParameterizedType接口,表示支持泛型。JDK1.4和以前的版本就不支持泛型。
如果支持泛型,((ParameterizedType) t).getActualTypeArguments();将返回泛型参数的类型。也就是我们声明的T的类型。之所以为数组,就是因为我们可以为一个类指定多个泛型参数的约束。进行强制转换之后就可以得到泛型参数对应的Class。
分享到:
相关推荐
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
而泛型DAO是一个类型安全的,代码精简的设计模式(相对于传统DAO),尤其在DAO组件数量庞大的时候,代码量的减少更加明显。 泛型DAO的核心是定义一个GenericDao接口,声明基本的CRUD操作: 用hibernate作为持久化...
基于hibernate5 泛型Dao实例,下载后改一下数据库 配置直接可以用
S2SH整合例子 注解配置 JSON 泛型Dao
使用了泛型的dao,在ssh里的应用,非常的简便好用
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
NULL 博文链接:https://rooi.iteye.com/blog/1032620
泛型DAO 完善的dao代码及criteria查询底层代码
ssh通用泛型DAO 共包含3个类:BaseHibernateDAO,Page,QueryParameter
3、此底层包含泛型DAO、Proxool连接池、国际化语言、DateUtil工具、ExcelUtil报表工具、自定义封装的弹框、批量删除、分页、上传等。 4、包含常用的工具:jquery、easy-ui、日期控件、highcharts图表控件、图片放大...
泛型dao 即:不写重复的dao 。这个技术 能让 dao层 和 service层 不写一行代码。外国都用这个泛型DAO了 中国还是一个类一个dao的写,我生气就写了这个文章了。 在本文中,我将为您展示如何避免再三地重复 DAO 代码
NULL 博文链接:https://287854442.iteye.com/blog/746718
NULL 博文链接:https://zhaoshijie.iteye.com/blog/982232
目的,研究泛型DAO模式在java Web程序运用中的应用及其作用。方法,通过研究泛型DAO模式的设计理念及工作过程,与已经存在的DAO模式进行对比,分析其在java Web程序运用中的作用。结果:在编辑了泛型DAO模式之后的java ...
T21.13_泛型DAO模式与OSIV java 经典教程 经典教材
Hibernate泛型DAO及使用方法.
再次打造SSH1整合下的通用泛型DAO+分页,基于HibernateTemplate,欢迎大家指正 - DAO - Java - JavaEye论坛_files
Hibernate泛型DAO及使用方法借鉴.pdf
泛型DAO模式在Java Web开发中的应用