ItemWriter Interface
DB 혹은 파일에 Write 처리를 위하여 ItemWriter Interface를 구현한다.
(1) ItemWriter 작성
ItemProcessor에서 전달 받은 데이터를 DB에 등록 한다.
public class MSmpDBToDBBtch implements ItemReader<MSmpDBToDBBtch01Io>
, ItemProcessor<MSmpDBToDBBtch01Io, MSmpDBToDBBtch02Io>
, ItemWriter<MSmpDBToDBBtch02Io>, ItemStream { // ItemWriter Interface 추가
@Override
public void write(List<? extends MSmpDBToDBBtch02Io> items) throws Exception {
dsmpEmpTst = DefaultApplicationContext.getBean(dsmpEmpTst, DsmpEmpTst.class);
/**
* List로 전달된 Item를 Loop를 돌면서 DB에 Insert할 DTO를 List형태로 설정한다.
*/
List<DSmpEmpTstInsert001In> dSmpEmpTmp100insert01Ins = new ArrayList<DSmpEmpTstInsert001In>();
for(MSmpDBToDBBtch02Io mSmpDBToDBBtch02Io : items)
{
DSmpEmpTstInsert001In in = new DSmpEmpTstInsert001In();
in.setEmpNo(mSmpDBToDBBtch02Io.getEmpNo()); // set [FW샘플 임직원번호]
in.setEmpNm(mSmpDBToDBBtch02Io.getEmpNm()); // set [FW샘플 임직원명]
in.setOccpNm(mSmpDBToDBBtch02Io.getOccpNm()); // set [FW샘플 직업명]
in.setMngrEmpNo(mSmpDBToDBBtch02Io.getMngrEmpNo()); // set [FW샘플 관리자임직원번호]
in.setHireDt(mSmpDBToDBBtch02Io.getHireDt()); // set [FW샘플 입사일자]
in.setPayAmt(mSmpDBToDBBtch02Io.getPayAmt()); // set [FW샘플 급여금액]
in.setDeptNo(mSmpDBToDBBtch02Io.getDeptNo()); // set [FW샘플 부서번호]
dSmpEmpTmp100insert01Ins.add(in);
}
/**
* insert 처리
* - 참고 1 : Executor Type BATCH로 C/U/D 처리는 Commit 시점에 bulk로 쿼리가 수행이 된다.
* - 참고 2 : Executor Type C/U/D 처리는 Commit 시점에 수행이 되기때문에 return 값은 임의의 음수 값이다.(의미없음)
*/
dsmpEmpTst.insert01(dSmpEmpTmp100insert01Ins);
}