ファンクションやプロシージャの実行

いま実装中です。Daoの定義はこうなる予定。

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

    @Function
    Salary getTotalSalary(@In Id deptId, @Out Salary average, @ResultSet List<Employee> employees);

    @Procedure(name = "aaa_proc")
    void fillTotalSalary(@In Id deptId, @Out Salary total, @ResultSet List<Employee> employees);
    ...
}

メソッドには@Functionや@Procedureを注釈し、パラメータには@In、@Out、@InOut、@ResultSetなどを注釈してパラメータの種別を指定します。@Inは省略可能です。 やっぱり指定必須にしました。明示したほうがわかりやすいので。


利用する側はこんなります。

Id id = new Id(99);
Salary average = new Salary();
List<Employee> employees = new ArrayList();

Salary total = dao.getTotalSalary(id, average, employees);

S2DaoS2JDBCのファンクションやプロシージャ呼び出しではパラメータをDTOで渡す必要がありますが、Domaでは不要というところが新しいかな。