개발 기록일지

[Mybatis/postgresql] VO 활용하여 파라미터 가져와서 DB 처리하기 본문

프로그래밍/Web 개발

[Mybatis/postgresql] VO 활용하여 파라미터 가져와서 DB 처리하기

JuoDev 2022. 2. 3. 17:26

상황:

UI 에서 사용자의 입력에 따른 데이터를 리스트로 가져와서 이것들을

DB에서 Update or Insert 해야하는 상황

넘겨줄 데이터

현재 프로젝트 소스에 구현된 상태는 VO를 사용하지 않고 HashMap 을 사용하고 있다.

 

예전에 교육받을때였나 웹프를 직접 해볼때는 VO 를 쓰고 DTO를 쓰고 뭐 그랬던거 같은데 기억이 하나도 안나더라

 

그리고 현재 소스에서는 VO를 사용하지 않고 전부 HashMap을 통해서 필요한 param을 주고받는 형태로 되어있었다.

 

근데 현재 상황은 위처럼 빨간 네모박스로 구성된 데이터가 하나의 쿼리에 parameter로 들어가 update/insert를 

해야해서 데이터를 리스트로 넘겨서 처리해줘야 했다. 

 

어케해야할까 하다가 VO를 만들고 이 VO를 담는 ListVO를 만들어서 데이터를 받도록 하였다.

public class DevModuleVO {
	
	//장치모델번호
	private String dev_model_seq;
	
	//등록되는 모듈장비번호
	private String ch_dev_seq;

	// 모듈제조사
	private String combox_makr;
	
	// 모듈모델명
	private String combox_model_nm;
	
	// 모듈용량
	private int combox_cpct;
	
	// 모듈 개수
	private int combox_modl_cnt;

	public String getCombox_makr() {
		return combox_makr;
	}

	public void setCombox_makr(String combox_makr) {
		this.combox_makr = combox_makr;
	}

	public String getCombox_model_nm() {
		return combox_model_nm;
	}

	public void setCombox_model_nm(String combox_model_nm) {
		this.combox_model_nm = combox_model_nm;
	}

	public int getCombox_cpct() {
		return combox_cpct;
	}

	public void setCombox_cpct(int combox_cpct) {
		this.combox_cpct = combox_cpct;
	}

	public int getCombox_modl_cnt() {
		return combox_modl_cnt;
	}

	public void setCombox_modl_cnt(int combox_modl_cnt) {
		this.combox_modl_cnt = combox_modl_cnt;
	}
	
	public String getDev_model_seq() {
		return dev_model_seq;
	}

	public void setDev_model_seq(String dev_model_seq) {
		this.dev_model_seq = dev_model_seq;
	}

	public String getCh_dev_seq() {
		return ch_dev_seq;
	}

	public void setCh_dev_seq(String ch_dev_seq) {
		this.ch_dev_seq = ch_dev_seq;
	}
	
	@Override
	public String toString() {
		return "DevModuleVO [combox_makr=" + combox_makr + ", combox_model_nm=" + combox_model_nm + ", combox_cpct="
				+ combox_cpct + ", combox_modl_cnt=" + combox_modl_cnt + "]";
	}
import java.util.List;

public class DevComboxChModuleVO {
	
	private List<DevModuleVO> list;

	public List<DevModuleVO> getList() {
		return list;
	}

	public void setList(List<DevModuleVO> list) {
		this.list = list;
	}
}

 

 

 

 

 

var chDevData = [];
        	$('.add-input').each(function(idx,e){
        	      var sendData = {};
        	      $(e).find('input').each(function(){
        	           var k = $(this).attr('name');
        	           var v = $(this).val();
        	           if(k!='' && v!=''){
        	        	   sendData[k] = v;
        	           }
        	           //console.log('key : ',k,', value : ',v);
        	      })
        	      chDevData.push(sendData);
        	})//add input 전체 묶어서
            
            chDevData.push(sendData);
            param.list=chDevData;

위의넘겨줄 데이터를 다음과 같이  sendData 라는 배열에 담았다.

 

빨간네모가 add-input 이라는 class 이고 그 안의 input type들을 돌면서 name 속성값들을 key로, value를 value에 담았다.

 

그리고 이걸 chDevData에다가 push하고

 

ajax 처리할때 param.list=chDevData; 를 통해 controller로 리스트를 넘겼다.

 

Controller부분

@RequestMapping(value = "/equipmentEdit.do", method= RequestMethod.GET)
    public Map<String, Object> updateEquipmentInfo(@RequestParam Map<String, Object> param, DevComboxChModuleVO vo) throws Exception {
    	param.put("list", vo.getList());
    	System.out.println(param);
        return equipmentManageService.updateDevInfo(param);
    }

 

param을 콘솔창에 찍어보자

{site_seq=3, dev_nm=asd

2, svc_cd=PV_POW, prev_dev_seq=3012, nxt_dev_seq=3012, up_dev_seq=, model_nm=CBDY_V10, model_seq=190, dev_type_cd=F005, makr=테스트, instl_plac=, instl_cpct=, instl_plan_no=, cntrctr=, instl_tod=20211130, instl_conf_day=, pre_insp_day=, mntr_st_date=, as_exp_day=, sn=, lora_id=, lora_head=, rmrk=, list[0].dev_model_seq=227, list[0].ch_dev_seq=3012001, list[0].combox_makr=TEST_MAKR01, list[0].combox_model_nm=TEST_MODULE_010, list[0].combox_cpct=200, list[0].combox_modl_cnt=7, list[1].dev_model_seq=227, list[1].ch_dev_seq=3012002, list[1].combox_makr=TEST_MAKR01, list[1].combox_model_nm=TEST_MODULE_010, list[1].combox_cpct=200, list[1].combox_modl_cnt=4, list[2].dev_model_seq=229, list[2].ch_dev_seq=3012003, list[2].combox_makr=TEST_MAKR01, list[2].combox_model_nm=TEST_MODULE_050, list[2].combox_cpct=500, list[2].combox_modl_cnt=5, list[3].dev_model_seq=229, list[3].ch_dev_seq=3012004, list[3].combox_makr=TEST_MAKR01, list[3].combox_model_nm=TEST_MODULE_050, list[3].combox_cpct=500, list[3].combox_modl_cnt=5, list[4].dev_model_seq=229, list[4].ch_dev_seq=3012005, list[4].combox_makr=TEST_MAKR01, list[4].combox_model_nm=TEST_MODULE_050, list[4].combox_cpct=500, list[4].combox_modl_cnt=5,

list=[DevModuleVO [combox_makr=TEST_MAKR01, combox_model_nm=TEST_MODULE_010, combox_cpct=200, combox_modl_cnt=7],

DevModuleVO [combox_makr=TEST_MAKR01, combox_model_nm=TEST_MODULE_010, combox_cpct=200, combox_modl_cnt=4],

DevModuleVO [combox_makr=TEST_MAKR01, combox_model_nm=TEST_MODULE_050, combox_cpct=500, combox_modl_cnt=5],

DevModuleVO [combox_makr=TEST_MAKR01, combox_model_nm=TEST_MODULE_050, combox_cpct=500, combox_modl_cnt=5],

DevModuleVO [combox_makr=TEST_MAKR01, combox_model_nm=TEST_MODULE_050, combox_cpct=500, combox_modl_cnt=5]]}

 

"list"에다가 세팅한 vo의 getList()를 통해 잘 넘어옴

제대로 넘어왔따