Springboot Update시에 DTO null 매꾸기

이민준·2021년 8월 23일
0
    public static boolean copyNonNullProperties(Object src, Object target) {
        try{
            BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
            return true;
        }
        catch (FatalBeanException e){
            e.printStackTrace();
            return false;
        }
    }
    public static String[] getNullPropertyNames (Object source) {
        final BeanWrapper src = new BeanWrapperImpl(source);
        java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();

        Set<String> emptyNames = new HashSet<String>();
        for(java.beans.PropertyDescriptor pd : pds) {
            Object srcValue = src.getPropertyValue(pd.getName());
            if (srcValue == null) emptyNames.add(pd.getName());
        }
        String[] result = new String[emptyNames.size()];
        return emptyNames.toArray(result);
    }

아래와 같이 사용해주면 된다.

타겟의 null이 아닌 칼럼만 긁어서 exist에 넣어준다.

ColumnNullPropertiesHandler.copyNonNullProperties(TargetDTO, existTarget);
profile
러닝커브가 장점인 개발자입니다.

0개의 댓글