在设计Dao的时候,我们常会用泛型进行设计。比如:基类Dao<T> ,子类SimpleDao<T> extends Dao<T>,实体类PersonDao extends SimpleDao<Person> ,通常我们会把常用方法抽出来放在SimpleDao<T> 类中,使用泛型方式进行实现,比如 增、删、改、查等,Add(T),remove(T),update(T),find(T) 其中增删改都可以直接用T泛型来实现,但是查找的时候,无法通过T去获取具体类型的class。
解决思路:PersonDao的父类中包含我们所需要的person对象,因此我们可以使用getClass方法获取person对象类,根据getGenericSuperclass获取父类,返回type数据 SimpleDao<Person> ,现在我们需要获取其中的Person信息,把该type强转为ParameterizedType然后调用getActualTypeArguments方法,获得type数组,第一个元素就是Person,仍然需要强转成Class,就可以进行相关操作。代码如下:
public abstract class SimpleDao<T> implements Dao<T> { private Class<T> entityClass; public SimpleDao() { Class class1 = getClass(); Type genericSuperclass = class1.getGenericSuperclass(); ParameterizedType params = (ParameterizedType) genericSuperclass; Type[] actualTypeArguments = params.getActualTypeArguments(); this.entityClass = (Class) actualTypeArguments[0]; } }
getClass表示获取调用类的class,最终是personDao来调用simpleDao,所以getClass得到的是impleDao<Person>
相关推荐
利用Java的反射机制实现的万能DAO工具类,包含对应的测试代码。具体功能包括:单表查询,多表查询,模糊查询,添加,修改,删除等。利用万能DAO可以对数据库中任意表进行操作,只需一个DAO类即可完成。阅读本代码...
java的基于泛型+反射的通用DAO例子,原创,没事写着玩的,请多指教哈。。。
java反射实现数据库增、删、改、查操作Dao
java中dao层反射使用
JAVA反射机制-Class类-Class对象的获取.pdf
一个Java Dao模式的的具体实例,详细描述了Dao的在实际项目中的开发应用
反射反射反射反射反射反射反射反射反射反射反射反射反射反射反射反射
com.jb.arklis.dao.BaseDAO, 然后点击run按钮,如果一切正常,那么你会看到使用反射在DemoApplication类中呼叫了BaseDAO的returnTestValue(String name)方法。 我的代码注释非常详细,相信当你看完之后,一般来说...
JSP直接获取dao层数据实例 java mysql jsp dao
Java通用连接DAO有JDBC连接和JNDI 两种,含源代码。
里面包含java之mvc框架中的dao层反射,dao层里面方法的实现采取的都是反射机制,比较灵活
一个简单的JAVA版的DAO生成器,通过反射机制获取bean实体类属性,前提是bean属性都有自动生成的getters和setters。 之前由于一个bean实体类就要写一个DAO,实在是没有效率,就想了这个方法,反射机制获取私有属性的...
java的DAO开发
java_开发Dao层的经典实现
学以致用,用以促学方能增身其能...!如果各位想交个朋友或增加自身能力可以与我联系,大家共同进步!
里面有java复习题,jdbc的相关知识,DAO模式,和oracle的复习题目。
java ssh通用DAO另类实现示例 java ssh通用DAO另类实现示例
一个简单的JAVA版的DAO生成器,通过反射机制获取bean实体类属性,前提是bean属性都有自动生成的getters和setters。 数据库支持MySQL 如果需要使用其他数据库,修改daoCreator.Util.DBUtil 使用方法介绍在test下的...
java DAO模式实现 附源码java DAO模式实现 附源码java DAO模式实现 附源码java DAO模式实现 附源码
JAVA Dao 数据库操作 添加 删除 修改 查询 初学者 可以看一看