List<JSONObject> MERGE INTO

HanSamDul·2023년 6월 16일
0

목록 저장 요청

1. 등록된 항목 출력

2. 출력된 목록의 대한 건별 정보 등록

3. 정보 등록한 데이터 목록 저장 및 수정 (Merge Into)

화면

소스코드

[jsp] 저장버튼 호출 함수

	function setFormData(){
		var url = 'setBmKindItemList.json';
		var param = grid.data.serialize();
		callAjax(url,param,cbSetFormData);
	}

[java] controller

	@RequestMapping("/setBmKindItemList")
	public void setBmKindItemList(@RequestBody List<JSONObject> params) throws Exception{
		bmService.setBmKindItemList(params);
	}
  • jsp에서 serialize() 함수를 통해 그리드 데이터들을 JSONObject List로 보낸 params을 controller에서 받는다
  • 이때 controller의 선언부 params은 List< JSONObject >이다.

[java] service

public void setBmKindItemList(List<JSONObject> params) throws Exception; 

[java] serviceimpl

	@Override
	public void setBmKindItemList(List<JSONObject> params) throws Exception {
		// TODO Auto-generated method stub
		for(JSONObject param : params) {
			bmMapper.mergeBmKindItemInfo(param);	
		}
	}
  • JSONObject List 데이터들을 각각 insert, update 하기 위해서 foreach문으로 params를 JSONObject타입으로 변환해 각각 mapper를 실행한다.

[java] mapper

	public void mergeBmKindItemInfo(JSONObject param);

[xml]

	<update id="mergeBmKindItemInfo" parameterType="json">
		MERGE INTO PDM_BM_KIND_ITEM A USING (
			SELECT #{BM_KIND_SEQ} BM_KIND_SEQ
				 , #{BM_ITEM_SEQ} BM_ITEM_SEQ
				 , #{ITEM_VAL} ITEM_VAL
			  FROM DUAL
		) D
		ON (A.BM_KIND_SEQ = D.BM_KIND_SEQ AND A.BM_ITEM_SEQ = D.BM_ITEM_SEQ)
		WHEN MATCHED THEN
			UPDATE SET A.ITEM_VAL = D.ITEM_VAL
		WHEN NOT MATCHED THEN
			INSERT (A.BM_KIND_SEQ, A.BM_ITEM_SEQ, A.ITEM_VAL)
			VALUES (D.BM_KIND_SEQ, D.BM_ITEM_SEQ, D.ITEM_VAL)
	</update>

0개의 댓글