天天看点

java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用

当项目是ssh框架时,每一个Action会对应一个Service和一个Dao。但是所有的Ation对应的Dao中的方法是相同的,只是要查的表不一样。由于封装的思想,为了提高代码的重用性。可以使用java中的泛型+反射去实现最终的封装,将所有的Dao层的共同部分写一个BaseDaoUtil。而所有的Dao都继承这个类。

思路:

----->(1)反射+泛型

----->(2)当生成子类对象(UserDao),调用空构造时(new UserDao()),子类的空构造会默认调用父类的空构造器(new BaseDaoUtil())

----->(3)在父类的空构造器中利用反射机制,获取每个dao层指定的泛型(public class UserDao extends BaseDaoUtil<User,Dog>{}),然后应用到父类中。

----->(4)只要能获取一个类的class对象,则可以通过反射对该类进行所有操作

第一步:定义BaseDaoUtil类

java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用
java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用

View Code

第二步:让不同的dao层类继承该BaseDaoUtil类,在继承时指定需要的泛型

java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用
java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用

第三步:进行测试

java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用
java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用