WEB/Mybatis

mybatis 에서 파라미터로 배열 사용하기

Gh1324 2022. 10. 19. 13:41
728x90

인수의 형태가 정해진 반복적인 작업을 할 때 mybatis에서  foreach 구문을 사용하여 반복문으로 처리가 가능하다.

 

아래 코드와 같이 list 또는 array형으로 받은 인수를

 

JAVA 코드

ModelAndView mv = new ModelAndView();

ArrayList<String> names = new ArrayList<String>();

names.add("홍길동");
names.add("홍길순");
names.add("김영희");
names.add("김철수");
names.add("단미");

mv.addObject("names", names);

 

mybatis구현체인 xml에서 foreach문을 사용하여 처리할 수 있다. 

 

XML

<foreach collection="names" item="type" open="(" close=")" separator="or"> -- 경력
     <choose>
          <when test="type == '홍길동'.toString()"> -- 경력무관
              name = #{type}
              and test = "ddd"
          </when>
      </choose>
</foreach>

collcection : 배열 이름, mybatis에 직접적으로 전달한 변수명이다.

item : 배열 값, 배열 리스트에서 하나의 요소값을 나타낸다.

open, close : foreach문의 가장 바깥에 감싸지는 문자열

seperator : 요소와 요소 사이의 구분자

 

 

원래는 select문의 in ()을 사용하려고 만들어진 것 같으나;;

위 방식으로 where절에서 여러 조건을 한번에 처리할 수 있다.

 

추가로 java함수를 mybatis에서 사용하고 싶다면

"@패키지네임.클래스네임.메서드네임()" 

이런식으로 사용이 가능하다.

728x90