2013-09-16 2 views
0

Есть ли способ вернуть «нормальный» набор результатов вместо набора строк из NamedParameterJdbcTemplate? Набор строк использует слишком много памяти.NamedParameterJdbcTemplate с очень большими наборами строк

Я создаю приложение для запроса базы данных, возвращая результаты как файл excel. Результаты могут составлять до миллиона строк с 20 столбцами.

Я использую класс NamedParameterJdbcTemplate, чтобы избежать использования '?', Что очень удобно.

Это мой код:

NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); 
MapSqlParameterSource paramSource = new MapSqlParameterSource(); 
paramSource.addValue("name", name); 
writeExcel(jdbcTemplate.queryForRowSet(pQuery, paramSource), pOutputStream); 

Однако queryForRowset считывает весь набор строк в памяти, прежде чем продолжать. В классическом JDBC вы просто открываете набор результатов и читаете строку за строкой, сохраняя соединение открытым, но сохраняя память.

ответ

0

Вы можете использовать jdbcTemplate «s метод

public <T> T query(final String sql, final ResultSetExtractor<T> rse) 

и передать свой собственный ResultSetExtractor

Смежные вопросы