ItemStream, ItemReader Interface

배치처리를 위해 데이터를 읽어올 ItemStream, ItemReader Interface 를 구현한다.

(1) ItemStream 작성

open 메소드에서는 입력 파라미터 값 확인과 데이터를 조회 처리(Iterator)할 DBIO를 호출한다.

close 메소드에서는 DB 연결 정보를 종료 처리한다.

public class MSmpDBToDBBtch implements ItemStream { // ItemStream Interface 추가

    /**
     * 배치 입력파라미터 "deptNo" Get
     */
    @Value("#{jobParameters['deptNo']}")
    private String feduDeptNo;

    @Override
    public void open(ExecutionContext executionContext) throws ItemStreamException
    {
        dsmpEmployee001 = DefaultApplicationContext.getBean(dsmpEmployee001, DsmpEmployee001.class);

        if(StringUtils.isEmpty(feduDeptNo))
        {
            throw new ItemStreamException("배치 입력아규먼트 'deptNo' 값이 존재하지 않습니다.");
        }

        /**
         * 입력받은 "deptNo" 에 대하여 샘플용 직원정보를 Iterator로 가져온다.
         */
        DSmpEmployeeSelectList01In inDto = new DSmpEmployeeSelectList01In();
        inDto.setDeptNo(Integer.parseInt(feduDeptNo));
        iterator = dsmpEmployee001.selectList001(inDto).iterator();
    }

    @Override
    public void update(ExecutionContext executionContext) throws ItemStreamException
    {

    }

    @Override
    public void close() throws ItemStreamException
    {
        DasUtils.closeCursor(iterator);
    }
}

(2) ItemReader 작성

조회 처리한 Iterator 에서 한건 씩 데이터를 가지고 와 ItemProcessor로 Return 처리 하고, 데이터가 존재하지 않을 경우에는 null 을 Return하여 종료 처리한다.

public class MSmpDBToDBBtch implements ItemReader<MSmpDBToDBBtch01Io>, ItemStream { // ItemReader Interface 추가

    @Override
    public MSmpDBToDBBtch01Io read() throws Exception, UnexpectedInputException,
            ParseException, NonTransientResourceException
    {
        MSmpDBToDBBtch01Io out = null;
        if(iterator.hasNext())
        {
            out = new MSmpDBToDBBtch01Io();
            DSmpEmployeeSelectList01Out input = iterator.next();

            out.setEmpNo(input.getEmpNo());            // set [FW샘플 임직원번호]
            out.setEmpNm(input.getEmpNm());            // set [FW샘플 임직원명]
            out.setOccpNm(input.getOccpNm());          // set [FW샘플 직업명]
            out.setMngrEmpNo(input.getMngrEmpNo());    // set [FW샘플 관리자임직원번호]
            out.setHireDt(input.getHireDt());          // set [FW샘플 입사일자]
            out.setPayAmt(input.getPayAmt());          // set [FW샘플 급여금액]
            out.setDeptNo(input.getDeptNo());          // set [FW샘플 부서번호]
        }

        return out;
    }
SWLab Bankware Global
  • 전체
  • BXM
  • BXCM
  • BXCP
  • BXI
제품 선택 시 더 정확한 매뉴얼 가이드를 제공해드립니다.

Copyright© Bankwareglobal All Rights Reserved.