kimmgamjja
[Mybatis] Mybatis foreach문 본문
foreach문
<foreach collection="test" item="item" open="(" close=")" separator="OR">
(C.BRANCH LIKE CONCAT('%',TRIM('${item}'),'%') OR C.PHONE LIKE CONCAT('%',TRIM('${item}'),'%'))
</foreach>
mybatis foreach문 지원 태그
- collection : 전달받은 인자. 배열(Array) 혹은 리스트(List) 형태만 가능
ex)
배열 예시
String[] testArray={"1", "2", "3"}
- 배열 파라미터를 Map을 통해 넘겼을 경우
1. DAO
public List<Members>getTestList(String[] userArray) {
HashMap<String, Object> map =new HashMap<String, Object>();
map.put("testArray",testArray);
return sqlSession.selectList("getTestList", map);
}
2. mapper.xml
<select id="getTestList" resultType="members">
SELECT * FROM TEST
WHERE PHONE IN
<foreach collection="testArray" item="arr" open="(" close=")" separator=",">
#{arr}
</foreach>
</select>
- 배열 파라미터를 직접 넘겼을 경우
1. DAO
public List<Members>getTestList(String[] userArray) {
return sqlSession.selectList("getTestList", testArray);
}
2. mapper.xml
→ foreach collection 에서 collection을 꼭 array 로 작성하기
<select id="getTestList" resultType="members">
SELECT * FROM TEST
WHERE PHONE IN
<foreach collection="array" item="arr" open="(" close=")" separator=",">
#{arr}
</foreach>
</select>
리스트 예시
List<Test> testList = testService.getTestList();
- 리스트를 Map을 통해 넘겼을 경우
- 리스트 안에 뽑고 싶은 결과값을 {key.value} 형태로
1. DAO
public List<Members>getTestList(List<Test> testList) {
HashMap<String, Object> map =new HashMap<String, Object>();
map.put("testList", testList);
return sqlSession.selectList("getTestList", map);
}
2. mapper.xml
→ foreach collection 에서 collection을 꼭 넘겨주는 리스트의 변수값과 동일하게 작성
<select id="getTestList" resultType="members">
SELECT * FROM TEST
WHERE PHONE IN
<foreach collection="testList" item="item" open="(" close=")" separator=",">
#{item.phone_number}
</foreach>
</select>
- 리스트 파라미터를 직접 넘겼을 경우
1. DAO
public List<Members>getTestList(List<Test> testList) {
return sqlSession.selectList("getTestList", testList);
}
2. mapper.xml
→ foreach collection 에서 collection을 꼭 "list" 로 작성해야함
<select id="getTestList" resultType="members">
SELECT * FROM TEST
WHERE PHONE IN
<foreach collection="list" item="item" open="(" close=")" separator=",">
#{item.phone_number}
</foreach>
</select>
mybatis foreach문 지원 태그
- item : 전달받은 인자 값을 alias 명으로 대체
- open : 구문이 시작될때 삽입할 문자열
- close : 구문이 종료될때 삽입할 문자열
- separator : 반복 되는 사이에 출력할 문자열
- index : 반복되는 구문 번호이다. 0부터 순차적으로 증가
https://java119.tistory.com/85
[MyBatis] 동적 쿼리 foreach문 문법 총 정리
시작하기에 앞서 참고 자료 *ibatis iterate문 지원 태그 property : 파라미터명 prepend : 쿼리로 쓰일 문자 open : 구문이 시작될때 삽입할 문자열 close : 구문이 종료될때 삽입할 문자열 conjunction : 반복되
java119.tistory.com