您的位置 首页 java

Java之Field对象,通过映射对实体类赋值

在我们工作过程中,前端同事有些时候,无法以实体类的方式传给我们请求报文,而是以类似于键值对的集合传输一个对象信息,那么我们如何拿到这个键值对,为对象赋值呢?

首先,我们创建一个数据库表对应的实体类

 @Data
public class UserInfo {

    private String name;

    private Integer age;

    private String idCard;

    private String gender;

    private String birthday;

}  

然后,创建一个关系映射类

 @Data
public class FieldInfo {

    //  字段名称
    private String code;

    //  字段值
    private Object value;

}  

接下来,我们进行测试

 public static void main(String[] args) {

        FieldInfo info_1 = new FieldInfo();

        info_1.setCode("name");
        info_1.setValue("夏目");

        FieldInfo info_2 = new FieldInfo();

        info_2.setCode("age");
        info_2.setValue(17);

        FieldInfo info_3 = new FieldInfo();

        info_3.setCode("gender");
        info_3.setValue("男");

        //  模仿 前端传来的 映射集合
        List<FieldInfo> list = new ArrayList<>();

        list.add(info_1);
        list.add(info_2);
        list.add(info_3);

        //  数据库,对应的实体类
        UserInfo userInfo = new UserInfo();

        //  获取全部field数组
        Field[] declaredFields = userInfo.getClass().getDeclaredFields();

        for (Field field: declaredFields) {

            field.setAccessible(true);

            try {

                for (FieldInfo info : list) {

                    //  field.getName() 获取的是UserInfo对象的字段名称,例如,name,age
                    if (field.getName().equals(info.getCode())) {
                        //  进行赋值
                        field.set(userInfo,info.getValue());
                    }

                }

            } catch(Exception e) {

                e.printStackTrace();

            }


        }

        //  最后我们把实体类 打印出来看看
        System.out.println(userInfo);

    }  

最终的输出结果:

UserInfo(name=夏目, age=17, idCard=null, gender=男, birthday=null)

然后,这个实体类就有值了,我们就可以,update或者insert等等操作啦!

end

今日处暑,天气转凉,小伙伴们要早晚,要注意加衣服啦!

文章来源:智云一二三科技

文章标题:Java之Field对象,通过映射对实体类赋值

文章地址:https://www.zhihuclub.com/177155.shtml

关于作者: 智云科技

热门文章

网站地图