如何優雅實現屬性的動態注入

2022-08-01 21:09:12 字數 1510 閱讀 2020

這是在實際開發專案中遇到的乙個問題。從資料庫查詢返回的 list< map< string, object>> 的集合。並且返回的列名是中文的,專案也沒有使用mybatis 直接使用的jdbctemplate. 並且欄位還超級多,這樣將資料轉換的時候如果乙個乙個的注入就會讓**臭長臭長的,所以才有了動態注入。

我這裡我整個思路都貼出來。

我們先建乙個entry類。用於物件儲存。

我這裡 建立乙個basedatebean 的類

@setter

@getter

public class basedatebean

可以看到在實際專案中屬性還是很多的,我這個還只是初版的,所以如果乙個乙個的set注入就很low了。

在建立好實體類後,還得建立乙個靜態的map 集合,將資料庫的列名和我們實體類的屬性名做乙個一一對應。這裡建立的這個map 集合是我個人愚見。沒有想到更好的辦法就先這樣處理的。

我們建立乙個basedatamap類

public  class basedatamap

public static final mapcnenmap=new hashmap<>();

static

}

可以看到就是乙個動態的map。

接下來就是核心**啦。我們建立乙個reflecthelper類

@slf4j

public class reflecthelper

public void initmethods() else if (pattern.matches(ss, methodname)) }}

public boolean setmethodvalue(string property,object object) catch (exception ex)

}return false;}}

上面**可以看到其實也就兩個方法setmethodvalue 和initmethods 。

initmethods 方法是在例項化 reflecthelper 這個類的時候執行的,主要的工作就是找到我們需要動態注入例項類的get 和set 方法。而setmethodvalue 方法就是給這個屬性賦值的。

現在準備工作做好了,怎麼使用呢?

private listgetbasedatebean(list> maplist)

basedatebean basedatebean;

for(mapmap:maplist)

}list.add(basedatebean);

}return list;

}

遍歷list 集合中的map,動態的將屬性值注入到實體類中。

我這裡是適合我業務開發設計的思路,給大家借鑑參考。

如果大家喜歡記得關注和分享喲❤

JPA如何優雅的拼接動態查詢條件

由於之前開發持久層使用者都是mybatis,所以體會不了jpa動態拼接查詢條件的痛楚。query select c from customer c where name is null or c.name name and email is null or c.email email listfin...

Spring的屬性注入是如何執行的?

public class userserviceimpl public void setschoolservice schoolserviceimpl schoolservice 第一種方式 這裡通過set方法將schoolserviceimpl注入到userserviceimpl中,userser...

JS如何優雅的刪除物件中的指定屬性?

要優雅的話,使用 lodash 的 omit 方法移除不要的屬性 const object const result omit object,a c 或者用 pick 方法只留下需要的屬性 const object 中規中矩式 const omit obj,uselesskeys object.ke...