getResultSet из Spring-JDBC - PullRequest
       21

getResultSet из Spring-JDBC

4 голосов
/ 17 октября 2008

Я использую поддержку Spring для JDBC. Я хотел бы использовать JdbcTemplate (или SimpleJdbcTemplate) для выполнения запроса и получения результата в качестве экземпляра ResultSet.

Единственный способ добиться этого - использовать:

String sql = "select * from....";
SqlRowSet results = jdbcTemplate.queryForRowSet(sql);
((ResultSetWrappingSqlRowSet) results).getResultSet();

Очевидным недостатком этого подхода является то, что он требует от меня предположения (путем приведения) о типе реализации SqlRowSet, но есть ли лучший способ?

Справочная информация ...

Причина, по которой я хочу получить результаты в виде ResultSet, а не коллекции bean-компонентов, заключается в том, что результаты будут переданы прямо в отчет Jasper для отображения. Другими словами, Java-бин будет использоваться только для временного хранения каждой строки в ResultSet, и я хотел бы избежать создания такого бина для каждого отчета Jasper, если это возможно.

Ура, Дон

Ответы [ 2 ]

1 голос
/ 17 октября 2008

Если вы хотите просто выполнить запрос и получить результаты, почему бы вам не использовать простой jdbc и не получить набор результатов? Обратите внимание, что для этого вам не нужна весна.

    Connection c = ...
    c.prepareCall("select ...").getResultSet();

Кроме того, вы получаете преимущество, используя объект в качестве DTO. Вам не нужно менять свой класс DTO, даже если изменяется доступ к данным или инструмент отчетов (допустим, вы начали использовать xquery вместо jdbc или вы используете apache-poi вместо jasper.

0 голосов
/ 27 октября 2011

Вы можете либо вызвать Jasper внутри обратного вызова JdbcTemplate (например, ResultSetExtractor), либо использовать прямой JDBC для передачи ResultSet в Jasper. В любом случае, когда вы звоните в Jasper, ваше соединение с базой данных остается активным до тех пор, пока ваш отчет не будет завершен.

...