开发者

java如何将map数据存入到实体类对象中

开发者 https://www.devze.com 2024-09-23 10:34 出处:网络 作者: ꧁এ悲宸๓₯㎕
目录将map数据存入到实体类对象中实体类代码测试类代码运行效果总结将map数据存入到实体类对象中
目录
  • 将map数据存入到实体类对象中
    • 实体类代码
    • 测试类代码
    • 运行效果
  • 总结

    将map数据存入到实体类对象中

    实体类代码

    (这里我们创建的User实体类)

    public class User {
        //实体类属性
        private String name;
        private String psw;
        private String email;
        private String tel;
        //1,toString方法
        @Override
        public String toString() {
            return "User{" +
                    "namepython='" + name + '\'' +
                    ", psw='" + psw + '\'' +
                    ", email='" + email + '\'' +
                    ", tel='" + tel + '\'' +
                    '}';
        }
        /javascript/2,构造方法(无参构造,有参构造)
        public User() {
        }
    
        public User(String name, String psw, String email, S编程客栈tring tel) {
            this.name = name;
            thttp://www.devze.comhis.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<>();javascript
            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
            //  这里在方法中传两个参数,一个是map集合,另一个是实体类,
            //  但是实体类不确定,会一直变动,所以传递一个Class类作为参数类型,可以拿到所有的实体类
    
            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());  //传递参数,第一个为实体类对象,第二个为map集合中的value值
                }
                //2,构建一个实体对象并返回
                return t;
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException("出错啦!"); //将异常放大,可不用写返回值
            }
        }

    运行效果

    java如何将map数据存入到实体类对象中

    如果你创建的不是User实体类,将下面代码改成你的实体类,map集合中的数据改成你想要的数据,就可以了

    java如何将map数据存入到实体类对象中

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消