天天看點

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使用