1. 程式人生 > 其它 >反射對欄位賦值2.0

反射對欄位賦值2.0

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;
            }
        }

    }