java如何將map數(shù)據(jù)存入到實(shí)體類(lèi)對(duì)象中
將map數(shù)據(jù)存入到實(shí)體類(lèi)對(duì)象中
實(shí)體類(lèi)代碼
(這里我們創(chuàng)建的User實(shí)體類(lèi))
public class User { //實(shí)體類(lèi)屬性 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,構(gòu)造方法(無(wú)參構(gòu)造,有參構(gòu)造) 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; } }
測(cè)試類(lèi)代碼
@Test //這里我用的是單元測(cè)試方法,比較方便 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"); //調(diào)用方法 User user = mapToBean(map, User.class); System.out.println(user); } //將map中的鍵值對(duì),封裝進(jìn)實(shí)體對(duì)象屬性中 public <T> T mapToBean( HashMap<String, Object> map,Class<T> c){ // <T> T 這里不確定返回值類(lèi)型,寫(xiě)一個(gè)泛型類(lèi)型,作為返回值 // HashMap<String, Object> map,Class<T> c // 這里在方法中傳兩個(gè)參數(shù),一個(gè)是map集合,另一個(gè)是實(shí)體類(lèi), // 但是實(shí)體類(lèi)不確定,會(huì)一直變動(dòng),所以傳遞一個(gè)Class類(lèi)作為參數(shù)類(lèi)型,可以拿到所有的實(shí)體類(lèi) try { T t = c.newInstance(); //拿到實(shí)體類(lèi)對(duì)象 //1,拆開(kāi)map,給對(duì)象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); //設(shè)置修改權(quán)限,因?yàn)槲覀儾捎玫姆庋bprivate,不修改權(quán)限的話(huà),就不能修改實(shí)體類(lèi)中的屬性值 f.set(t,entry.getValue()); //傳遞參數(shù),第一個(gè)為實(shí)體類(lèi)對(duì)象,第二個(gè)為map集合中的value值 } //2,構(gòu)建一個(gè)實(shí)體對(duì)象并返回 return t; } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("出錯(cuò)啦!"); //將異常放大,可不用寫(xiě)返回值 } }
運(yùn)行效果
如果你創(chuàng)建的不是User實(shí)體類(lèi),將下面代碼改成你的實(shí)體類(lèi),map集合中的數(shù)據(jù)改成你想要的數(shù)據(jù),就可以了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot使用JdbcTemplate完成對(duì)數(shù)據(jù)庫(kù)的增刪改查功能
這篇文章主要介紹了springboot使用JdbcTemplate完成對(duì)數(shù)據(jù)庫(kù)的增刪改查功能,需要的朋友可以參考下2017-12-12創(chuàng)建并運(yùn)行一個(gè)java線(xiàn)程方法介紹
這篇文章主要介紹了創(chuàng)建并運(yùn)行一個(gè)java線(xiàn)程,涉及線(xiàn)程代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11Spring通過(guò)c3p0配置bean連接數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了Spring通過(guò)c3p0配置bean連接數(shù)據(jù)庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08Apache?Hudi異步Clustering部署操作的掌握
這篇文章主要介紹了Apache?Hudi異步Clustering部署操作的掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-03-03使用Maven將springboot工程打包成docker鏡像
這篇文章主要介紹了使用Maven將springboot工程打包成docker鏡像,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12SpringBoot中使用HTTP客戶(hù)端工具Retrofit
這篇文章主要為大家介紹了SpringBoot中使用HTTP客戶(hù)端工具Retrofit方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Java下變量大小寫(xiě)駝峰、大小寫(xiě)下劃線(xiàn)、大小寫(xiě)連線(xiàn)轉(zhuǎn)換
有時(shí)候需要處理對(duì)象屬性的getter、setter方法,或者將屬性與數(shù)據(jù)表字段進(jìn)行相互轉(zhuǎn)換,感興趣的可以了解一下2021-06-06SpringBoot通過(guò)整合Dubbo解決@Reference注解問(wèn)題
這篇文章主要介紹了SpringBoot通過(guò)整合Dubbo解決@Reference注解問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Mybatis-Plus最優(yōu)化持久層開(kāi)發(fā)過(guò)程
Mybatis-plus(簡(jiǎn)稱(chēng)MP)是一個(gè)Mybatis的增強(qiáng)工具,在mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,提高效率,自動(dòng)生成單表的CRUD功能,這篇文章主要介紹了Mybatis-Plus最優(yōu)化持久層開(kāi)發(fā),需要的朋友可以參考下2024-07-07