這是在實際開發專案中遇到的乙個問題。從資料庫查詢返回的 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...