以前DBUtilsの活用を書きましたが、他の使い方がわかったのでメモ
以前はSelectでList<エンティティ>を取得したのですが、List<Map>でも取得できます。
ソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/** * 特定のSQLを読み込んでマップを返す * * @param selectQuery クエリ * @return LIst型パラメータ */ public List<Map<String,Object>> select(String selectQuery) { List<Map<String,Object>> mapList = new ArrayList<>(); try { this.connect(); ResultSetHandler rsh = new MapListHandler(); Logger.getLogger(DBUtilsConnect.class.getName()).log(Level.INFO, selectQuery); mapList = (List) qr.query(con, selectQuery, rsh); this.close(); } catch (SQLException ex) { Logger.getLogger(DBUtilsConnect.class.getName()).log(Level.SEVERE, null, ex); } return mapList; } |
以前はBeanListHandlerになっていましたが、今回はMapListHandlerになっています。
1 |
ResultSetHandler rsh = new MapListHandler(); |
注意点としてはかえってくるMapの方はデータベースの型をそのまま引き継ぎます。
例えばDatabaseにintで保存してあればIntegerです。なので受け取るMapは<String,Object>にしておきましょう。
しかしMap<String,String>にしてもコンパイルエラーは発生せず、getのときに怒られました。
ジェネリクスが使われる前の仕様ということでしょうか・・・
参考リンク