SQL 스토어드 프로시저 호출에 대한 디폴트 pureQuery 동작은 StoredProcedureResult의 인스턴스로 결과를 리턴하는 것입니다. 또한 디폴트로 pureQuery는 OUT 및 INOUT 매개변수를 표시하기 위해 인라인 메소드나 어노테이션이 있는 메소드에 전달된 Bean 및 맵을 갱신합니다.
T handleCall (CallableStatement cstmt, Object... parameters) throws SQLException
pureQuery는 handleCall() 메소드를 호출하여 인라인 메소드나 어노테이션이 있는 메소드에서 리턴되는 오브젝트를 작성합니다. pureQuery가 이 메소드를 호출할 때 pureQuery는 java.sql.CallableStatement 인터페이스를 구현하는 오브젝트를 전달합니다. 이 인터페이스는 SQL CALL문을 실행하는 데 사용됩니다. pureQuery는 또한 CALL문에서 매개변수의 값을 전달하는 데 사용한 매개변수도 전달합니다.
어노테이션이 있는 메소드에서 CallHandlerWithParameter 오브젝트를 호출하기 위해 사용할 수 있는 두 가지 방법이 있습니다.
@Call(sql = "{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}") @Handler(callHandlerWithParameters = customHandlers.GetAddEmResult_CallHandlerWithParameters.class) public MyResultsBean spResults(AddEm_Parameters parms);
핸들러를 매개변수로 지정할 때, 매개변수는 메소드 서명에서 마지막 매개변수여야 합니다. CallHandlerWithParameters를 ParameterHandler와 함께 매개변수로 지정하는 경우, 핸들러는 메소드 서명에서 마지막 두 개의 매개변수여야 합니다.
예를 들어, 인터페이스에서 특정 유형의 CallHandlerWithParameters를 호출하는 어노테이션이 있는 메소드를 정의할 수 있습니다.@Call(sql = "{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}") public MyResultsBean spResults(AddEm_Parameters parms, GetAddEmResult_CallHandlerWithParameters c);
다음과 같이 메소드를 호출할 수 있습니다.
MyResultsBean results = face.spResults(parmsObject, new GetAddEmResult_CallHandlerWithParameters());
CallHandlerWithParameters<CAL> 오브젝트를 Data 인터페이스에 있는 이 버전의 오버로드된 call() 메소드에 전달합니다.
<CAL> T call(String sql, CallHandlerWithParameters<CAL> callHandlerWithParameters, Object... parameters)
예제는 다음과 같습니다.
MyResultsBean spResults = db.call("{?1 = Call ADDEM (?1.added1, ?1.addend2, ?1.sum)}", new custom.GetAddEmResult_CallHandlerWithParameters(), int outVal, int inVal1, int inVal2, int inVal3)