6

Spring の JDBC サポートを使用しています。JdbcTemplate (または SimpleJdbcTemplate) を使用してクエリを実行し、結果を ResultSet のインスタンスとして取得したいと考えています。

これを達成する唯一の方法は、次を使用することです。

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

このアプローチの明らかな欠点は、SqlRowSet の実装タイプについて (キャストによって) 仮定する必要があることですが、より良い方法はありますか?

背景情報...

結果を Bean のコレクションではなく ResultSet として取得する理由は、結果が Jasper レポートに直接渡されて表示されるためです。つまり、Java Bean は各行を ResultSet に一時的に格納する以外の目的で使用されず、Jasper レポートごとにそのような Bean を作成することはできれば避けたいと考えています。

乾杯、ドン

4

2 に答える 2

1

クエリを実行して結果を取得したいだけなら、プレーンな jdbc を使用して結果セットを取得してみませんか? これだけを行うのに春は必要ないことに注意してください。

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

また、オブジェクトを DTO として使用することで利点が得られます。データ アクセスやレポート ツールが変更された場合でも、DTO クラスを変更する必要はありません (たとえば、jdbc の代わりに xquery を使用し始めるか、jasper の代わりに apache-poi を使用するとします。

于 2008-10-17T15:24:07.787 に答える