挿入したプライマリ・キーのインポート


1.xmlファイル


InsertでuserGeneratedKeysプロパティをtrue、keyColumn="prchsId"keyProperty="prchsId"に変更します.

SQL_.xml

<!-- 매입발주서 등록 -->
<insert id="insertPrchs" parameterType="prchsVO" useGeneratedKeys="true" keyColumn="prchsId" keyProperty="prchsId">
	<selectKey order="BEFORE" keyProperty="prchsId" resultType="string">
		SELECT 'PRCHS' || LPAD(NVL(MAX(TO_NUMBER(SUBSTR(NVL(PRCHS_ID, 'PRCHS00001'),6))),0)+1,5,'0') FROM PRCHS
	</selectKey>
	INSERT INTO PRCHS ( 
		PRCHS_ID, 
		PRCHS_DT, 
		PRCHS_AMT, 
		CNPT_ID, 
		PRCHS_SE 
	)
	VALUES (
	    #{prchsId}, 
	    #{prchsDt},
	    #{prchsAmt},
	    #{cnptId},
	    '저장'
	)
	
</insert>

2. serviceImpl


ServiceImplでは、insert時にVOオブジェクトをパラメータに渡してinsert処理を行います.
そして、戻り値はVOのId値を格納して返す.
	//매입발주서 작성 - 된다~!!!!!!!!!!!!!!!!!!!!
	@Override
	public int insertPrchs(PrchsVO prchsVO) {
		//insert
		prchsMapper.insertPrchs(prchsVO);
		
		logger.info("prchsVO : {}",prchsVO);
		String prchsId = prchsVO.getPrchsId();
		
		logger.info("아이디 잘드러완는지,,  : " + prchsId);
		
		//결과 담을 변수
		int result = 0; 
		
		//매입상품 insert하기
		for(PrchsGdsVO vo : prchsVO.getPrchsGdsVO()) {
			//매입상품 하나씩 꺼내서 insert
			vo.setPrchsId(prchsId);
			//매입상품 insert
			result += prchsMapper.insertPrchsGds(vo);
		}
		
		return result;
	}
下の図のように、loggerを使用してIdを印刷すると、元のNULL値のIdが格納され出力されます.
		logger.info("prchsVO : {}",prchsVO);
		String prchsId = prchsVO.getPrchsId();

		logger.info("아이디 잘드러완는지,,  : " + prchsId);