ストアドファンクション

ストアドファンクションを呼び出すには、@FunctionをDaoのメソッドに注釈します。

salary); ... }]]>

パラメータには、パラメータの種別を示す@In@InOut@Out@ResultSetのいずれかのアノテーションが必須です。 パラメータは複数指定できます。 戻り値は次のいずれかでなければいけません。

デフォルトではメソッド名がファンクション名になります。 @Functionname要素に値を指定した場合は、その値がファンクション名になります。

salary);]]>

@Functioncatalog要素やschema要素にカタログ名やスキーマ名を指定できます。 このときファンクションの名前はcatalog要素、schema要素、name要素(指定されていなければメソッド名)をピリオドで連結したものになります。

salary);]]>

戻り値の型がエンティティクラスやエンティティクラスを要素とするjava.util.Listの場合において、エンティティのプロパティすべてに対して漏れなく結果セットのカラムをマッピングすることを保証したい場合は、@FunctionensureResultMapping要素にtrueを指定します。

execute();]]>

結果セットのカラムにマッピングされないプロパティが存在する場合org.seasar.doma.jdbc.ResultMappingExceptionがスローされます。

ストアドファンクションのパラメータとDaoメソッドのパラメータの並び順は合わせなければいけません。

INパラメータは、@Inをメソッドのパラメータに注釈して示します。 パラメータの型が基本型もしくはドメインクラスの場合、引数をnullにできます。 それ以外の型の場合、引数はnullであってはいけません。

次のように使用します。

INOUTパラメータは、@InOutをメソッドのパラメータに注釈して示します。 注釈されるパラメータの型はorg.seasar.doma.jdbc.Reference でなければいけません。 Referenceの型パラメータは基本型もしくはドメインクラスでなければいけません。 引数はnullであってはいけません。

salary);]]>

次のように使用します。

ref = new Reference(in); dao.execute(ref); BigDecimal out = ref.get();]]>

OUTパラメータは、@Outをメソッドのパラメータに注釈して示します。 注釈されるパラメータの型はorg.seasar.doma.jdbc.Reference でなければいけません。 Referenceの型パラメータは基本型もしくはドメインクラスでなければいけません。 引数はnullであってはいけません。

メソッドの戻り値の型がvoid以外の場合、戻り値はOUTパラメータとなります。

salary);]]>

次のように使用します。

ref = new Reference(); Integer result = dao.execute(ref); BigDecimal out = ref.get();]]>

カーソルのOUTパラメータ、もしくはストアドファンクションが返す結果セットは、@ResultSetをメソッドのパラメータに注釈して示します。 注釈されるパラメータの型は、基本型ドメインクラスエンティティクラス]]>のいずれかを要素とするjava.util.Listでなければいけません。 引数はnullであってはいけません。

employee);]]>

次のように使用します。

employees = new ArrayList(); dao.execute(employees); for (Employee e : employees) { ... }]]>

検索結果を受ける型がエンティティクラスやエンティティクラスを要素とするjava.util.Listの場合において、エンティティのプロパティすべてに対して漏れなく結果セットのカラムをマッピングすることを保証したい場合は、@ResultSetensureResultMapping要素にtrueを指定します。

employee);]]>

結果セットのカラムにマッピングされないプロパティが存在する場合org.seasar.doma.jdbc.ResultMappingExceptionがスローされます。

結果セットを]]>にマッピングする場合、 @FunctionmapKeyNaming要素にマップのキーのネーミング規約を指定できます。

> execute(@In Integer id);]]>

MapKeyNamingType.CAMEL_CASEは、カラム名をキャメルケースに変換することを示します。 そのほかに、カラム名をを大文字や小文字に変換する規約があります。 指定しない場合、変換は行われません。