欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java如何將map數(shù)據(jù)存入到實(shí)體類(lèi)對(duì)象中

 更新時(shí)間:2024年09月23日 09:29:53   作者:??悲宸???  
在Java編程中,經(jīng)常需要將Map集合中的數(shù)據(jù)轉(zhuǎn)換為實(shí)體類(lèi)對(duì)象,這可以通過(guò)反射機(jī)制實(shí)現(xiàn),即通過(guò)遍歷Map對(duì)象,使用反射根據(jù)鍵名對(duì)應(yīng)實(shí)體類(lèi)的屬性名,動(dòng)態(tài)調(diào)用setter方法將值設(shè)置到實(shí)體對(duì)象中,這樣的操作使得數(shù)據(jù)從Map結(jié)構(gòu)轉(zhuǎn)移到了具體的JavaBean中,便于后續(xù)的操作和管理

將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)文章

最新評(píng)論