反射對欄位賦值2.0
阿新 • • 發佈:2022-11-29
1.使用BeanUtils.copyProperties對變數賦值
2.使用反射功能自定義賦值
1.使用BeanUtils.copyProperties對變數賦值
場景:多個實體類對映到目標實體類,欄位沒有冗餘
需要將對映實體類複製到目標實體類時,公共欄位會做copy;
直接使用BeanUtils.copyProperties(source, target)方法即可;
需要注意的是,賦值時所有名稱相同的欄位都會複製
2.使用反射功能自定義賦值
場景:多個實體類對映到目標實體類,欄位有冗餘
使用BeanUtils.copyProperties複製就會出現資料覆蓋;
如果涉及欄位比較多,使用反射對資料賦值比較好
public void setdata(Target dto,Source result,Class clazz){ Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); try { Object value = field.get(result); if (!ObjectUtils.isEmpty(value)) { field.set(dto,value); } } catch (IllegalAccessException e) { continue; } } }