나는 스프링의 namedParamJdbcTemplate을 사용하여 IN 절을 처리하기 위해 다양한 포럼을 진행했지만, 여전히 내가 찾고있는 물건을 얻지 못하고있다. 아래는 내 문제입니다 :IN 절을 사용하는 UPDATE 쿼리에 Jdbc 템플릿을 어떻게 사용할 수 있습니까?
I했습니다 다음과 같은 방법
public void updateBatchTableForStatus(List<Integer> reportShellIds, String scheduleType) {
Map<String,List<Integer>> shellIds = Collections.singletonMap("reportShellIds", reportShellIds);
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("reportShellIds", shellIds, Types.NUMERIC)
parameters.addValue("eventType", scheduleType, Types.VARCHAR);
this.namedParamJdbcTemplate.update(GET_EVENT_METADATA_INFO, parameters);
}
위의 방법에 대해 참조 쿼리가 아래에 정의되어
: BATCH_ID 열에
public static final String SQL_UPDATE_BATCH_LOOKUP_TABLE_FOR_STATUS_BY_BATCH_IDS = "" +
"UPDATE " +
TABLE_BATCH_REF + " BLK " +
"SET " +
"BLK.EXECUTION_STATUS_CODE = :eventType " +
"WHERE " +
"BLK.BATCH_ID in(:reportShellIds) ";
데이터 유형이 번호는 (24 , 0) 및 VARCHAR의 EXECUTION_STATUS_CODE 열에 사용됩니다. Oracle 데이터베이스를 사용하고 있습니다.
그러나 위의 메서드는 SQL 예외를 throw합니다.
누군가가 내가 틀렸다고 말해 줄 수 있고, 그게 무슨 수정입니까?
미리 감사드립니다.
안부 LB
에 그대로 배열을 배치 할 수 있습니다. –