Я нахожусь в процессе преобразования создания подключения в класс JdbcTemplate, который обрабатывает создание и освобождение ресурсов. Одна из реализаций, показанных ниже, не возвращает мне набор результатов, хотя исходная для того же запроса возвращает мне записи. Я преобразовал приведенный ниже код
ps = connection.prepareStatement(strQuery, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ps.setLong(1, getId());
objRs = ps.executeQuery();
в код, показанный ниже. Я использовал StreamingStatementCreator по той причине, что мне нужно было установить ResultSet.TYPE_SCROLL_INSENSITIVE и ResultSet.CONCUR_READ_ONLY.
objRs = (ResultSet) jdbcTemplate.query(new StreamingStatementCreator(strQuery),
new PreparedStatementSetter() {
public void setValues(PreparedStatement preparedStatement) throws SQLException {
preparedStatement.setLong(1, getId());
}
}, new CustomResultSetExtractor());
public class CustomResultSetExtractor implements ResultSetExtractor<ResultSet>{
public ResultSet extractData(ResultSet resultSet) throws SQLException, DataAccessException {
return resultSet;
}
}
Я не знаком с этими методами. Я попытался найти примеры, и я чувствую, что код правильный, возможно, я что-то упустил. Первый случай возвращает мне значение в objRs, а второй ничего не возвращает.