なぜか、ProcedureHandlerImplをリファクタ中。
ストアドプロシージャの戻り値にDtoを使えるようにするために、
自前でProcedureHandlerImplを作成しているんですが、
既存のソースが、結構、なんていうか、ざっくり作ったというか・・・
S2Daoの、テーブルへの対応は丁寧に作りこんである感じがしますが、
ストアド対応は、
ぶっちゃけ、愛が足りないなと思いました。
なので、機能追加をする前に、ちょっとリファクタをしています。
- DatabaseMetaData#getProcedureColumnsのResultSetから、columnType、columnName、dataType、typeNameを個別の変数にせず、1クラスにまとめる。
- 戻り値のhandle用に、ProcedureResultHandlerを作成する。(ResultSetHandlerのストアド版です)
と言った感じ。
局所的な切り出しですが、こんな感じ。
while (rs.next()) { int columnType = rs.getInt(5); int dataType = rs.getInt(6); ProcedureColumnDescriptor pcd = new ProcedureColumnDescriptor(); pcd.setColumnName(rs.getString(4)); pcd.setColumnType(columnType); pcd.setDataType(dataType); pcd.setTypeName(rs.getString(7)); columnDescriptorList.add(pcd);
小さな変更ですが、S2Dao本体にフィードバックしたいところ。
ちなみに、ProcedureResultHandlerは、既存ものを参考に作った
- MapProcedureResultHandler
- ObjectProcedureResultHandler
に加えて
- BeanProcedureResultHandler
を追加する予定です。
そして、これらのHandlerの中で、STRUCTやARRAYに対応します。