Doma 1.17.0 リリース

Java6(JDBC4.0)対応のDaoフレームワーク Doma 1.17.0 をリリースしました。
ダウンロードはこちらからできます。

Mavenをご利用の方はこちらを参照ください。

以前のバージョンから移行するには移行ガイドを参照ください。

リリースノート

1.16.0からの変更点は以下のとおりです。

Bug

  • [DOMA-240] - [Core] @Delegateが注釈されたメソッドでvoidの戻り値が使えない問題に対応しました。
  • [DOMA-241] - [Core] @Delegateが注釈されたメソッドで可変長引数を使うとaptで生成されるメソッドのオーバーライドで警告が出る問題に対応しました。

New Feature

  • [DOMA-242] - [Core] @Selectが注釈されたDaoメソッドでMap<String, Object>を返せるようにしました。
  • [DOMA-243] - [Core] @Procedureや@Functionが注釈されたDaoメソッドで、結果セットをMap<String, Object>にマッピングできるようにしました。
  • [DOMA-244] - [Core] SelectBuilderでMap<String, Object>を返せるようにしました。

Mapの利用について

S2DaoS2JDBCにあってDomaにない機能のひとつにMapへの対応があったわけですが、今回のリリースで対応しました。
たとえば、検索結果をMapで取得したい場合はこんな感じで書けます。上から順に、1件検索、複数件検索、イテレーション検索の例です。

@Dao(config = AppConfig.class)
public interface EmployeeDao {

    @Select
    Map<String, Object> selectById(Integer employeeId);

    @Select
    List<Map<String, Object>> selectAll();

    @Select(iterate = true)
    <R> R selectAll(IterationCallback<R, Map<String, Object>> callback);
}

Mapのキーとなるカラム名をアンダースコア区切りからキャメルケースに変換したいとか、小文字に変換したいとかといった場合は、@SelectのmapKeyNaming要素に値を指定します。

    @Select(mapKeyNaming = MapKeyNamingType.CAMEL_CASE)
    Map<String, Object> selectById(Integer employeeId);

MapKeyNamingTypeに他にどんな値があるかはJavadocみてください。mapKeyNamingに明示的に指定しない場合は何も変換しません。