mybatis를 사용하면서 오류가 났습니다. 바쁘실 테니 해결 방법을 바로 알아보겠습니다.
먼저 console창에 뜬 오류를 통해서 위치와 원인을 파악해야 합니다.
Caused by: org.apache.ibatis.builder를 통해 ibatis에 대한 파일인 xml에서 에러가 났을 거라고 생각했습니다.
오류 원인이자 위치인데 이유는 mybatis foreach문 문법을 까먹고 잘못 적었기 때문이었습니다..
foreach문 안에 collection이란 속성값은 자료구조를 말하는 게 아니라 앞에서 넘겨주는 파라미터 명 즉 변수 명입니다. 그런데 저는 파라미터의 형을 적었기 때문에 오류가 발생하는 것이었습니다..
때문에 foreach를 돌리고 싶은 파라미터의 명을 써주면 오류 해결입니다~
까먹지 않기 위해 mybatis foreach 문법도 정리해 보겠습니다.
예제
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
<where>
<foreach collection="list" item="item" index="index" open="(" seperator="," close=")" nullable="true">
#{item}
</foreach>
</where>
</select>
collection | 반복하기 위한 파라미터 를 입력해주면 된다. Map이나 Array, List, Set 등과 같은 반복 가능한 객체만 가능하다. |
item | List의 경우 foreach 구문이 실행되면서 순차적으로 저장된 값이 담긴다. Map의 경우 Value가 담긴다. |
index | List의 경우 index 번호가 담긴다. Map의 경우 key가 담긴다. |
open | 해당 구문이 시작될 때 삽입되는 문자열로 위 예제에서는 구문이 시작될 때 ( 가 붙는다. |
close | 해당 구문이 종료될 때 삽입되는 문자열로 위 예제에서는 구문이 종료될 때 ) 가 붙는다. |
seperator | foreach 구문이 실행되면서 반복적으로 값 사이에 출력 될 문자열로 위 예제에서는 , 가 붙는다. |
nullable | 전달 받은 파라미터가 null인 경우 foreach 구문의 생략 여부를 결정하며 true의 경우 foreach를 생략한다. default는 false이다. |
마이바티스 3의 동적 sql에 대한 설명이 공식 사이트에 있는데 한 번씩 보는 걸 추천합니다.
'Develop' 카테고리의 다른 글
[Dev Environment] Intellij 영구 폴백 라이선스 사용하기 (Fallback License) (0) | 2024.05.12 |
---|---|
[Concepts] JavaScript 동작 원리 #1 (0) | 2024.02.18 |
[Error] invalid comparison: java.util.ArrayList and java.lang.String 해결 (0) | 2023.09.13 |
[Dev Environment]오라클 SQL Developer 설치 및 데이터베이스 연결 (2) | 2023.09.09 |
[Dev Environment] Intellij(인텔리제이) 자동 빌드 설정 - 2023.2 ver (0) | 2023.08.14 |