<CAL> T call(java.lang.String sql, CallHandlerWithParameters<CAL> callHandlerWithParameters, Object... parameters)
Bei dieser Version der Methode call() der Schnittstelle Data ist das Objekt CallHandlerWithParameters für die Verarbeitung der von der gespeicherten Prozedur zurückgegebenen Abfrageergebnisse oder Aktualisierungszähler verantwortlich. Diese Informationen sind für die Anwendung, von der die Methode call() aufgerufen wurde, nicht verfügbar, sofern sie nicht über das zurückgegebene Objekt <CAL> zur Verfügung gestellt werden.
Das Objekt CallHandlerWithParameters ist für die Verarbeitung der OUT- und INOUT-Parameter der gespeicherten Prozedur und deren Einbindung in das Ergebnisobjekt <CAL> verantwortlich. Diese Informationen sind wiederum für die Anwendung, von der die Methode call() aufgerufen wurde, nicht verfügbar, sofern sie nicht über das zurückgegebene Objekt <CAL> zur Verfügung gestellt werden.
Wenn das Objekt CallHandlerWithParameters eine beliebige Bean oder Map-Parameter aktualisieren muss, die im Aufruf der Methode call() übergeben werden, müssen diese Parameter mit der Methode handleCall() des Objekts CallHandlerWithParameters aktualisiert werden. Bei Vorhandensein eines Objekts CallHandlerWithParameters werden von pureQuery keine solchen Aktualisierungen vorgenommen.
Beispiel: Eine gespeicherte Prozedur, die so definiert ist, dass sie drei IN-Parameter, keine OUT-Parameter und einige zurückgegebene Abfrageergebnisse mit einem Objekt CallHandlerWithParameters zu deren Verarbeitung aufweist. Die Klasse, durch die CallHandlerWithParameters<CAL> implementiert wird, ist wie folgt definiert:
public class mapHandler implements CallHandlerWithParameters<Map<String, Object>> { Map <String, Object> handleCall (CallableStatement cstmt, Object... parameters) throws SQLException { ... } }
Sie könnten die Methode call() wie folgt aufrufen:
Connection con = DriverManager.getConnection(...); Data db = DataFactory.getData(con); mapHandler chOne = new mapHandler(); Map<String, Object> diffMap = db.call( "CALL getReports(?,?,?)", chOne, p1, p2, p3 );