2017-04-26 4 views
-1

私はRowMapperを実装するたびに、いつもオブジェクトを構築することができるいくつかの種類のドメインオブジェクトを期待しています。これは必須ですか?私は約10,000行のテーブルを持っています。最終的な目標は、これらの行のそれぞれを反復して、一度に1つずつ別のサービスに渡す特定の列値のHashMapを作成することです。JDBCOperationsを使用して一度に1行ずつデータベーステーブルをクエリし、voidを返しますが、値に基づいてハッシュマップを作成するにはどうすればよいですか?

Javaメモリに10,000個の無駄なオブジェクトを作成して返すだけで、その事実の後にハッシュマップを構築することはできません。関数に渡された行のデータでハッシュマップを作成し、次の行に移動して、基本的に前の行のデータを破棄したいとします。

私の出発点は、jdbcOperationsへの参照があることです(クエリなどのメソッドにアクセスできるようになりました)。これで、私はこのオブジェクトにアクセスできるようになりました。何故ならば、文字列を1行1列のテーブルに1つずつ入れ、EACH行には、ResultSetの値を使ってHashMapを構築するのですか?それはあなたの代わりに、オブジェクトへのそれぞれの行をマップするために設計されてRowMapperの欲しいもののように聞こえる

おかげ

答えて

1

は、あなたは、単一のオブジェクトを返しますResultSetExtractorをしたいです。

あなたのコードを見てなければ、具体的には難しいですが(テストしていません)、次のようなもの:

Map<Whatever, Whatever> finalMap = jdbcOperations.query(sql, args, new ResultSetExtractor() { 
    Map<Whatever, Whatever> extractData(ResultSet rs) throws SQLException, DataAccessException { 
     Map<Whatever, Whatever> map = new HashMap<>(); 
     while (rs.next()) { 
      // put stuff into your map 

     } 
     return map; 
    } 
}); 
+0

私は文字通り構築、データベースのテーブルの上にHashMapを各行を反復処理したい<文字列、オブジェクト>各行の結果セット・データから削除します。 –

+1

あなたは、各行に対して、ハッシュマップを構築して、そのデータで別のオブジェクトを呼びたいと言っていますか?事実、あなたの操作から何かを返す必要はありませんか? – tddmonkey

+0

はい。解決策は、RowMapperを使用しないで、代わりにRowCallbackHandlerを使用することです。 –

関連する問題