在我们工作过程中,前端同事有些时候,无法以实体类的方式传给我们请求报文,而是以类似于键值对的集合传输一个对象信息,那么我们如何拿到这个键值对,为对象赋值呢?
首先,我们创建一个数据库表对应的实体类
@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
今日处暑,天气转凉,小伙伴们要早晚,要注意加衣服啦!