목록 저장 요청
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 {
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>