java如何將map數(shù)據(jù)存入到實體類對象中
更新時間:2024年09月23日 09:29:53 作者:??悲宸???
在Java編程中,經(jīng)常需要將Map集合中的數(shù)據(jù)轉換為實體類對象,這可以通過反射機制實現(xiàn),即通過遍歷Map對象,使用反射根據(jù)鍵名對應實體類的屬性名,動態(tài)調用setter方法將值設置到實體對象中,這樣的操作使得數(shù)據(jù)從Map結構轉移到了具體的JavaBean中,便于后續(xù)的操作和管理
將map數(shù)據(jù)存入到實體類對象中
實體類代碼
(這里我們創(chuàng)建的User實體類)
public class User { //實體類屬性 private String name; private String psw; private String email; private String tel; //1,toString方法 @Override public String toString() { return "User{" + "name='" + name + '\'' + ", psw='" + psw + '\'' + ", email='" + email + '\'' + ", tel='" + tel + '\'' + '}'; } //2,構造方法(無參構造,有參構造) public User() { } public User(String name, String psw, String email, String tel) { this.name = name; this.psw = psw; this.email = email; this.tel = tel; } //3,getter setter方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPsw() { return psw; } public void setPsw(String psw) { this.psw = psw; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } }
測試類代碼
@Test //這里我用的是單元測試方法,比較方便 public void test1(){ HashMap<String, Object> map = new HashMap<>(); map.put("name","貂蟬"); map.put("psw","666"); map.put("email","123456789@qq.com"); map.put("tel","123456789"); //調用方法 User user = mapToBean(map, User.class); System.out.println(user); } //將map中的鍵值對,封裝進實體對象屬性中 public <T> T mapToBean( HashMap<String, Object> map,Class<T> c){ // <T> T 這里不確定返回值類型,寫一個泛型類型,作為返回值 // HashMap<String, Object> map,Class<T> c // 這里在方法中傳兩個參數(shù),一個是map集合,另一個是實體類, // 但是實體類不確定,會一直變動,所以傳遞一個Class類作為參數(shù)類型,可以拿到所有的實體類 try { T t = c.newInstance(); //拿到實體類對象 //1,拆開map,給對象t的屬性賦值 Set<Map.Entry<String, Object>> entries = map.entrySet(); for (Map.Entry<String, Object> entry : entries) { Field f = c.getDeclaredField(entry.getKey()); f.setAccessible(true); //設置修改權限,因為我們采用的封裝private,不修改權限的話,就不能修改實體類中的屬性值 f.set(t,entry.getValue()); //傳遞參數(shù),第一個為實體類對象,第二個為map集合中的value值 } //2,構建一個實體對象并返回 return t; } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("出錯啦!"); //將異常放大,可不用寫返回值 } }
運行效果
如果你創(chuàng)建的不是User實體類,將下面代碼改成你的實體類,map集合中的數(shù)據(jù)改成你想要的數(shù)據(jù),就可以了
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot使用JdbcTemplate完成對數(shù)據(jù)庫的增刪改查功能
這篇文章主要介紹了springboot使用JdbcTemplate完成對數(shù)據(jù)庫的增刪改查功能,需要的朋友可以參考下2017-12-12Spring通過c3p0配置bean連接數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了Spring通過c3p0配置bean連接數(shù)據(jù)庫,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08Apache?Hudi異步Clustering部署操作的掌握
這篇文章主要介紹了Apache?Hudi異步Clustering部署操作的掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-03-03使用Maven將springboot工程打包成docker鏡像
這篇文章主要介紹了使用Maven將springboot工程打包成docker鏡像,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12SpringBoot中使用HTTP客戶端工具Retrofit
這篇文章主要為大家介紹了SpringBoot中使用HTTP客戶端工具Retrofit方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06SpringBoot通過整合Dubbo解決@Reference注解問題
這篇文章主要介紹了SpringBoot通過整合Dubbo解決@Reference注解問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03Mybatis-Plus最優(yōu)化持久層開發(fā)過程
Mybatis-plus(簡稱MP)是一個Mybatis的增強工具,在mybatis的基礎上只做增強不做改變,提高效率,自動生成單表的CRUD功能,這篇文章主要介紹了Mybatis-Plus最優(yōu)化持久層開發(fā),需要的朋友可以參考下2024-07-07