當項目是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類

View Code
第二步:讓不同的dao層類繼承該BaseDaoUtil類,在繼承時指定需要的泛型

第三步:進行測試
