7

私は現在、古いデータベースから新しいデータベースにデータを移行するための移行プロジェクトに取り組んでいます(このためにJavaアプリケーションを使用する理由を尋ねないでください。お客様が必要としているものです)。

私が今更新しているいくつかの初期のコードがありました。私が変更していることの1つは、JdbcTemplateそこにあったボイラープレートコードではなく、Springのコードを使用することです。

JdbcTemplate残念ながら、古いコードに類似したページングクエリを実行する方法はまだ見つかりませんでした。

Statement statement = getConnection().createStatement(
    ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
statement.setFetchDirection(ResultSet.FETCH_FORWARD);
statement.setFetchSize(1000);
return statement.executeQuery();

プレーンJDBCコードで作成されgetConnection()たオブジェクトを返すだけです(またはフレームワーク実装の一部ではありません)。ConnectionSessionFactory

次に、結果セットをループして、行を1つずつマッピングします。で同じ機能を実現する簡単な方法があるかどうか誰かが知っていJdbcTemplateますか?

TIA

4

2 に答える 2

6

このようなアプリケーションの自然な選択はSpringBatchだと思います(印象的な機能のページを読んでください) 。

あなたに関連するはずのセクションは次のとおりです。

ItemReadersおよびItemWriters>データベース
、特にJdbcPagingItemReader

于 2010-11-30T08:48:18.490 に答える
1

sthのことですか。このような?

SimpleJdbcTemplate template = new SimpleJdbcTemplate(dataSource);

List<String> result = template.query("SELECT name FROM people WHERE id > ?",
    new RowMapper<String>() {

        public String mapRow(ResultSet rs, int rowNum) throws SQLException {
            return rs.getString("name");
        }

    }, 666
);

またはこれ:

template.getJdbcOperations().query("SELECT name FROM people WHERE id > ?",
        new Object[] { 666 },
        new RowCallbackHandler() {

            public void processRow(ResultSet rs) throws SQLException {
                System.out.println(String.format(
                    "Got '%s'", rs.getString("name")));
            }

        }
);
于 2010-11-25T17:12:56.577 に答える