IT/development

[mybatis] parameter 값 동시 전달

알 수 없는 사용자 2024. 3. 31.

mybatis에 데이터 전달 시 vo의 필드와 vo안의 list 동시 전달

[mybatis] parameter 값 동시 전달


javascript

if (confirm("저장하시겠습니까?")) {

	dlbrList = [];

	$('#tab3Body tr').each(function() {
        var rowData = {
			'exmnSn': $(this).find('#exmnSnId').val() 
        }
        dlbrList.push(rowData);
    });

	var paramData = {
		cmitNo: $("#cmitNoId").val(),
		mtgMngNo: $("#mtgMngNoId").val(),
        //vo안의 list명과 일치해야 함
		dlbrList: dlbrList
	};

	$.ajax({
		url: '/save.do',
		method: 'POST',
		data: JSON.stringify(paramData),
		dataType:'json',
		contentType: 'application/json',
		success: function (data) {
			if (data.code === "1") {
				alert("성공");
				fn_moveList();
			} else {
				alert("실패");
			}
		},
		error: function (err) {
			alert("오류");
			console.error('Error fetching data: ', err);
		}
	});
}

controller

@PostMapping("/save.do")
public ModelAndView save(@RequestBody DlbrVO paramVO) {

    ModelAndView mav = new ModelAndView();
    mav.setViewName("jsonView");
    mav.addObject("code", dlbrService.selectList(paramVO));
    return mav;
}

vo

@Data
public class DlbrVO {
                                
    private String cmitNo;          
    private String mtgMngNo;        
    private String exmnSn;                      
	//화면에서 전달하는 list명과 일치해야 함
    private List<DlbrVO> dlbrList = new ArrayList<>();
}

mapper

public List<DlbrVO> selectList(DlbrVO paramVO);

mybatis

<select id="selectList" parameterType="DlbrVO" resultType="DlbrVO">
    SELECT *
      FROM BOARD
     <where>
     	<!-- vo의 필드값 -->
        AND MTG_MNG_NO = #{mtgMngNo} AND CMIT_NO = #{cmitNo}
        AND EXMN_SN IN
        <!-- vo안의 dlbrList의 값 -->
        <foreach collection="dlbrList" item="item" open="(" separator="," close=")">
            #{item.exmnSn}
        </foreach>
     </where>
</select>

전달 parameter값 예시

DlbrVO: {
	 cmitNo: "1"
   , mtgMngNo: "mtg00001"
   , dlbrList:[
       {
          cmitNo: ""
        , mtgMngNo: ""
        , exmnSn: "1"
       }
       , 
       {
		  cmitNo: ""
        , mtgMngNo: ""
        , exmnSn: "2"
       }
   ]
}

개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.

틀린 점 있을 경우 댓글 부탁드립니다.

댓글