あまりいい方法ではないですが、1行のレコードをMapにして、
Mapを配列として受け取りたい場合があると思います。
List<Map<String, Object>>
この方法を見てみましょう。
簡単です!
これは、SpringJDBCの機能そのままなので、受け取り部分だけ記述します。
全体のコードは、以下を参照してください。
・DBからデータを取得するには?(NamedParameterJdbcTemplateのサンプル)
【サンプルコード(Dao部分のみ)】
public List<Map<String, Object>> findMember(MemberSearchKey key) { // String sql = "select * from t_member "; String where = createWhere(key); // if(!where.equals("")){ sql += " where " + where; } //会員リスト List<Map<String, Object>> result = this.namedParameterTemplate.queryForList(sql, key); return result; }
【説明】
特に説明することはありません。
queryForListを呼ぶだけです。
Springの機能は簡単ですがいろいろサポートしていて楽です。
ここでは、NamedParameterJdbcTemplate クラスでメソッドを呼んでいますが、
SimpleJdbcTemplate クラスにもこのメソッドは用意されています。
【補足】
DBのselectの結果をMapの配列で受け取るのはあまり良い方法ではありません。
例えば、最大でも20件くらいしか結果が返らないことが分かっているような(数が少ない)場合はOKです。
しかし、100件、1000件以上返る可能性がある場合は、避けたほうがいいと思います。
というのは、Mapはかなりメモリを消費するからです。
多用すれば、GCの原因にもなるでしょう。
また、保持しているオブジェクトの型がはっきりしません。(Object型なので)
そうすると、使用者が型の間違いをしたり、後で型が変わったときにリファクタリングできないので
コードを非常に変更しにくくします。
なるべくクラスを作成してそれをListにし、setter/getterで値を操作するようにしましょう!
参考:
・DBからデータを取得するには?(SimpleJdbcTemplate のサンプル)
・DBからデータを取得するには?(NamedParameterJdbcTemplateのサンプル)
・NamedParameterJdbcTemplateをうまく使うには?