본문 바로가기
Java

자바 제네릭

by NaHyungMin 2020. 8. 6.
public class DtoWrapper {
    public static void BindData(HashMap<String, Object> hashmap, IDtoSelector dtoClass)
    {
        for(Field filed : dtoClass.getClass().getDeclaredFields())
        {
            IColumn annotation = filed.getAnnotation(IColumn.class);

            if(annotation != null)
            {
                if(hashmap.containsKey(annotation.Name()) == true)
                {
                    try {
                        filed.setAccessible(true);
                        filed.set(dtoClass, hashmap.get(annotation.Name()));
                        filed.setAccessible(false);
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    public static <T extends IDtoSelector> List<T> BindDataList(List<HashMap<String, Object>> hashmapList, Class<T> cls)
            throws IllegalAccessException, InstantiationException {
        List<T> codeDtoList = new ArrayList<>();

        for(int i = 0; i < hashmapList.size(); i++){
            T dto = cls.newInstance();
            BindData(hashmapList.get(i), dto);
            codeDtoList.add(dto);
        }

        return codeDtoList;
    }
}

 

public interface IDtoSelector {
}

 

 List<HashMap<String, Object>> mapList = sqlSession.selectList(SqlName.getQuery(SqlName.informationSelect, "getCode"), codeName);
 List<CodeDto> codeDtoList = DtoWrapper.BindDataList(mapList, CodeDto.class);

 

@Setter
@Getter
public class CodeDto implements IDtoSelector {
    /**
     * column : CD_CLSFCTN
     * 검색 문자열
     */
    @ApiModelProperty(hidden = true)
    private String codeName;

    /**
     * column : CD
     * 코드
     */
    @IColumn(Name = "CD")
    @Expose
    private String code;

    /**
     * column : CD_NM
     * 코드명
     */
    @IColumn(Name = "CD_NM")
    @Expose
    private String text;

    /**
     * column : SYS_CD_NM
     * 시스템 코드명
     */
    @IColumn(Name = "SYS_CD_NM")
    @Expose
    private String systemText;

    /**
     * column : SORT_ORDR
     * 정렬순번
     */
    @IColumn(Name = "SORT_ORDR")
    @Expose
    private int sortOrder;
}

 

이걸 만든 이유는... 데이터베이스 이름이 개똥같아서 -..- 내가 만들지도 않은 테이블 컬럼으로 계속되는 질문에 스트레스 받아 json으로 변경할 때 쓰는 용도..

'Java' 카테고리의 다른 글

자바 mybatis Like  (0) 2020.08.21
자바 순차키 만들기  (0) 2020.08.07
자바 비밀번호 암호화  (0) 2020.07.23
자바 이메일 검사  (0) 2020.07.23
자바 스프링 구조  (0) 2020.07.23