java + mybatis + foreach
오래간만에 Java로 프로젝트를 할 일이 생겨서 하다보니 기본적인 것을 헤매고 있다. (무려 3시간이나 삽질하다 금요일 저녁 포기하고 퇴근했다.)
문제는 mybatis에서 foreach를 사용하는데, in sql의 조건으로 list를 넘기는 부분이 생각했던 것이 아니었는데. (결국 1cm 빗나간것이 영 엉뚱한 짓을 하고 있었던 것이다.)
curl
- 결국 보내는 List변수명과 받는 List변수명이 일치해야 하는 것이다.
curl -X 'POST' \
'http://localhost:8080/test01/select01' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"listTest01InVO": [
{
"id": "ID2"
},
{
"id": "ID3"
}
]
}'
Java
List의 변수명을 잘 기억하자
public class Test01WrapperInVO {
private List<Test01InVO> listTest01InVO;
}
SQL
Collection의 변수명을 잘 기억하자
<foreach collection="listTest01InVO" item="item" open="(" separator="," close=")">
#{item.id}
</foreach>
- 여기에서 item은 Mybatis가 스스로 선언할 변수명이다.