ItemWriter Interface
DB 혹은 파일에 Write 처리를 위하여 ItemWriter Interface를 구현한다.
(1) ItemWriter 작성
ItemProcessor에서 전달 받은 데이터를 DB에 등록 한다.
public class MSmpDBToDBBtch implements ItemReader<MSmpDBToDBBtch01Dto>
, ItemProcessor<MSmpDBToDBBtch01Dto, MSmpDBToDBBtch02Dto>
, ItemWriter<MSmpDBToDBBtch02Dto>, ItemStream { // ItemWriter Interface 추가
@Override
public void write(List<? extends MSmpDBToDBBtch02Dto> in) throws Exception
{
if(dSmpEmpTmp001 == null)
{
dSmpEmpTmp001 = DefaultApplicationContext.getBean(DSmpEmpTmp001.class);
}
/**
* List로 전달된 Item를 Loop를 돌면서 DB에 Insert할 DTO를 List형태로 설정한다.
*/
List<DSmpEmpTmp001insert01InDto> dSmpEmpTmp100insert01InDtos = new ArrayList<DSmpEmpTmp001insert01InDto>();
for(MSmpDBToDBBtch02Dto mSmpDBToDBBtch02Dto : in)
{
DSmpEmpTmp001insert01InDto inDto = new DSmpEmpTmp100insert01InDto();
inDto.setFeduEmpNo(mSmpDBToDBBtch02Dto.getFeduEmpNo()); // set [FW샘플 임직원번호]
inDto.setFeduEmpNm(mSmpDBToDBBtch02Dto.getFeduEmpNm()); // set [FW샘플 임직원명]
inDto.setFeduOccpNm(mSmpDBToDBBtch02Dto.getFeduOccpNm()); // set [FW샘플 직업명]
inDto.setFeduMngrEmpNo(mSmpDBToDBBtch02Dto.getFeduMngrEmpNo()); // set [FW샘플 관리자임직원번호]
inDto.setFeduHireDt(mSmpDBToDBBtch02Dto.getFeduHireDt()); // set [FW샘플 입사일자]
inDto.setFeduPayAmt(mSmpDBToDBBtch02Dto.getFeduPayAmt()); // set [FW샘플 급여금액]
inDto.setFeduDeptNo(mSmpDBToDBBtch02Dto.getFeduDeptNo()); // set [FW샘플 부서번호]
dSmpEmpTmp100insert01InDtos.add(inDto);
}
/**
* insert 처리
* - 참고 1 : CONNECTED_BATCH로 C/U/D 처리는 Commit 시점에 bulk로 쿼리가 수행이 된다.
* - 참고 2 : CONNECTED_BATCH로 C/U/D 처리는 Commit 시점에 수행이 되기때문에 return 값은 임의의 음수 값이다.(의미없음)
*/
dSmpEmpTmp001.insert02(dSmpEmpTmp100insert01InDtos);
}