@ModelAttribute 와 VO 로 값 주고 받기

이번엔 VO를 사용해 값을 주고받기 해보겠습니다.


그전에 jsp단에서 컨트롤러로 값을 보낼때

아래와 같이 form 태그에 name="hanq" 와 value="한큐" 넣어줍니다




다음 컨트롤러 에서 아래와 같이

ModelAttribute로 HanqVO를 호출해줍니다

@ModelAttribute는 setter를 자동으로 호출 해줍니다.



1
2
3
4
5
6
7
@RequestMapping(value = "welcomeWeb2.do")
    public String initMain6(@ModelAttribute HanqVO hanqVO, ModelMap model) throws Exception {      
        List<Map> welcomeWebList = welcomeWebService.selectWelcomeWebServiceList2(hanqVO);
                
            model.addAttribute("welcomeWebList", welcomeWebList);
            return "VO/VO.tiles";
    }
cs

서비스나 서비스 임플, 맵퍼를 만들어줄때도

해당 VO를 넣어줘야합니다



--



다음 HanqVO 보겠습니다. getter은 필요없기 때문에

setter만 만들어 줬습니다.

VO를 넣는 경로는 service에 넣어주면 됩니다





1
2
3
4
5
6
7
8
9
public class HanqVO {    
    private static final long serialVersionUID = 1L;
    
    private String hanq = "";
    
    public void setHanq(String hanq) {
        this.hanq = hanq;
    }
}
cs


다음 쿼리문에서 jsp form태그에 넣어줬던 값을 이용해

where 절에 USER_NAME = #{hanq}를 이용해

유저네임이 한큐인 값만 뽑을수 있게 할 수 있습니다.


1
2
3
4
5
6
7
8
9
<select id="selectWelcomeWebServiceList2" parameterType="hanqVO" resultType="egovMap">
      SELECT ID,
          USER_NAME
      FROM welcome_web
      WHERE 1=1
      <if test='hanq != null'>
         AND USER_NAME = #{hanq}
      </if>
   </select>
cs


이때 parameterType이 hanqVO인데 이것은

hanqVO객체 형식으로 값을 받겠다는 것이다.

if 문안의 hanq != 의 hanq 는 hanqVO 안의 필드이다.

이렇게 VO를 받는것을 할수 있다.


다음 VO를 사용하기 위해선

아래와 같은 경로에 typeAlias를 추가 해줘야한다.




이렇게 Mybatis에서 VO를 사용할수 있다.



댓글

Designed by JB FACTORY