SQL을 실행하고 결과를 가져 오기 위해 Spring-JDBC를 사용하고 있습니다.PreparedStatement - 모든 매개 변수를 바인딩하지 않습니다.
SELECT
SUM(spend) total_sum
FROM TABLE_NAME
WHERE
sup_id = ? AND
((YEAR = ? AND period IN (?)) OR
(YEAR = ? AND period IN(?)))
그리고 바인드 변수로 전달됩니다
final Object[] paramMap = { "1234", "2010",
"'01_JAN','02_FEB','03_MAR'", "2009", "'11_NOV','12_DEC'" };
final List<LeadTimeDto> query = getJdbcTemplate().query(sql, paramMap,
new RowMapper<LeadTimeDto>() {
@Override
public LeadTimeDto mapRow(final ResultSet resultSet,
final int arg1) throws SQLException {
final LeadTimeDto leadTimeDto = new LeadTimeDto();
final String string = resultSet.getString("total_sum");
System.out.println("ltime = " + string);
leadTimeDto.setLeadTime(string);
return leadTimeDto;
}
});
은 여기 무슨 일이 일어나고 있는지 모르겠어요. THIRD 매개 변수 바인딩에 문제가 있습니다. 아래와 같이 쿼리 자체에 세 번째 매개 변수의 값을 쓰면 작동합니다.
SELECT
SUM(spend) total_sum
FROM TABLE_NAME
WHERE
sup_id = ? AND
((YEAR = ? AND period IN ('01_JAN','02_FEB','03_MAR')) OR
(YEAR = ? AND period IN(?)))
따옴표 (')에 문제가있는 경우 FIFTH 매개 변수도 문제가되어야합니다. 그러나 그것은 구속력이 있습니다.
Map 및 Bean과 함께 getNamedParameterJdbcTemplate()을 사용하려했지만 행운이 없었습니다.
당신이지고 어떤 오류 : 몇 가지 대안을 설명하는 다음 문서를 참조하십시오? –
예외가 있습니까? 그렇다면 게시 pls –
오류가 없습니다. 레코드가 꺼내지 않는 것뿐입니다. – HanuAthena