728x90
반응형
IN으로 항목을 SELECT 해야 할 때 사용하는 방법입니다.
<select id="" ...>
SELECT *
FROM table
where id IN (${list_data})
</select>
위 같은 실수를 하지 않길 바랍니다.
아래 코드처럼 foreach문을 사용하면 보안을 유지할 수 있습니다.
<select id="" ...>
SELECT *
FROM table
where id IN
<foreach collection="list" item="map" separator="," open="(" close=")">
#{map}
</foreach>
</select>
String[] array;
<select id="" ...>
SELECT *
FROM table
where id IN
<foreach collection="array" item="map" index="i" separator="," open="(" close=")">
#{map[i]}
</foreach>
</select>
ArrayList<String> list = new ArrayList<>();
<select id="" ...>
SELECT *
FROM table
<where>
<foreach collection="list" item="map" separator="or" open="(" close=")">
id = #{map}
</foreach>
</where>
</select>
만약, ### Error querying database. Cause: java.sql.SQLException: ORA-56900: 바인드 변수는 피벗|피벗 해제 작업 내에서 지원되지 않습니다. 란 에러가 발생한다면, 아래와 같이 사용을 해야 합니다.
<foreach collection="list" item="item" index="index" separator=",">
'${item}' AS item${index}
</foreach>
728x90
반응형
'database > mysql' 카테고리의 다른 글
[MySQL] Query 성능 확인 (0) | 2020.11.01 |
---|---|
[MySQL] 특정 필드 ,(콤마)로 나열하여 조회하기 : GROUP_CONCAT (0) | 2020.11.01 |
[MySQL] insert ... on duplicate key update (upsert) (0) | 2020.11.01 |
[MySQL] 월별 Partition Table 생성, 수정, 삭제 (0) | 2020.10.31 |
[MySQL] 다중 테이블 삭제 (join + delete) (0) | 2020.10.31 |
댓글