IT/development

[mybatis] parameter 값 동시 전달

알 수 없는 사용자 2024. 3. 31. 14:50
반응형

목차

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


    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"
           }
       ]
    }

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

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

    반응형