org.springframework.jdbc.core.simple

## Class AbstractJdbcCall

- java.lang.Object
- - org.springframework.jdbc.core.simple.AbstractJdbcCall

- Direct Known Subclasses:
    SimpleJdbcCall

      public abstract class AbstractJdbcCall
      extends Object

  Abstract class to provide base functionality for easy stored procedure calls based on configuration options and database metadata. This class provides the base SPI for `SimpleJdbcCall`.
  Since:
    2.5
  Author:
    Thomas Risberg

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Log` | `logger` Logger available to subclasses

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractJdbcCall(DataSource dataSource)` Constructor to be used when initializing using a `DataSource`.
    `protected` | `AbstractJdbcCall(JdbcTemplate jdbcTemplate)` Constructor to be used when initializing using a `JdbcTemplate`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addDeclaredParameter(SqlParameter parameter)` Add a declared parameter to the list of parameters for the call.
    `void` | `addDeclaredRowMapper(String parameterName, ParameterizedRowMapper rowMapper)` Deprecated. in favor of `addDeclaredRowMapper(String, org.springframework.jdbc.core.RowMapper)`
    `void` | `addDeclaredRowMapper(String parameterName, RowMapper rowMapper)` Add a `RowMapper` for the specified parameter or column.
    `protected void` | `checkCompiled()` Check whether this operation has been compiled already; lazily compile it if not already compiled.
    `void` | `compile()` Compile this JdbcCall using provided parameters and meta data plus other settings.
    `protected void` | `compileInternal()` Method to perform the actual compilation.
    `protected Map<String,Object>` | `doExecute(Map<String,?> args)` Method that provides execution of the call using the passed in Map of parameters
    `protected Map<String,Object>` | `doExecute(Object[] args)` Method that provides execution of the call using the passed in array of parameters
    `protected Map<String,Object>` | `doExecute(SqlParameterSource parameterSource)` Method that provides execution of the call using the passed in `SqlParameterSource`
    `protected CallableStatementCreatorFactory` | `getCallableStatementFactory()` Get the `CallableStatementCreatorFactory` being used
    `protected List<SqlParameter>` | `getCallParameters()` Get a List of all the call parameters to be used for call.
    `String` | `getCallString()` Get the call string that should be used based on parameters and meta data.
    `String` | `getCatalogName()` Get the catalog name used.
    `Set<String>` | `getInParameterNames()` Get the names of in parameters to be used.
    `JdbcTemplate` | `getJdbcTemplate()` Get the configured `JdbcTemplate`.
    `String` | `getProcedureName()` Get the name of the stored procedure.
    `protected String` | `getScalarOutParameterName()` Get the name of a single out parameter or return value.
    `String` | `getSchemaName()` Get the schema name used.
    `boolean` | `isCompiled()` Is this operation "compiled"?
    `boolean` | `isFunction()` Is this call a function call?
    `boolean` | `isReturnValueRequired()` Does the call require a return value?
    `protected Map<String,?>` | `matchInParameterValuesWithCallParameters(Map<String,?> args)` Match the provided in parameter values with registered parameters and parameters defined via metadata processing.
    `protected Map<String,Object>` | `matchInParameterValuesWithCallParameters(SqlParameterSource parameterSource)` Match the provided in parameter values with registered parameters and parameters defined via metadata processing.
    `protected void` | `onCompileInternal()` Hook method that subclasses may override to react to compilation.
    `void` | `setAccessCallParameterMetaData(boolean accessCallParameterMetaData)` Specify whether the parameter metadata for the call should be used.
    `void` | `setCatalogName(String catalogName)` Set the catalog name to use.
    `void` | `setFunction(boolean function)` Specify whether this call is a function call.
    `void` | `setInParameterNames(Set<String> inParameterNames)` Set the names of in parameters to be used.
    `void` | `setProcedureName(String procedureName)` Set the name of the stored procedure.
    `void` | `setReturnValueRequired(boolean b)` Specify whether the call requires a rerurn value.
    `void` | `setSchemaName(String schemaName)` Set the schema name to use,

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### logger

          protected final Log logger

      Logger available to subclasses

  - ### Constructor Detail

    - #### AbstractJdbcCall

          protected AbstractJdbcCall(DataSource dataSource)

      Constructor to be used when initializing using a `DataSource`.
      Parameters:
        `dataSource` - the DataSource to be used

    - #### AbstractJdbcCall

          protected AbstractJdbcCall(JdbcTemplate jdbcTemplate)

      Constructor to be used when initializing using a `JdbcTemplate`.
      Parameters:
        `jdbcTemplate` - the JdbcTemplate to use

  - ### Method Detail

    - #### getJdbcTemplate

          public JdbcTemplate getJdbcTemplate()

      Get the configured `JdbcTemplate`.

    - #### getCallableStatementFactory

          protected CallableStatementCreatorFactory getCallableStatementFactory()

      Get the `CallableStatementCreatorFactory` being used

    - #### setProcedureName

          public void setProcedureName(String procedureName)

      Set the name of the stored procedure.

    - #### getProcedureName

          public String getProcedureName()

      Get the name of the stored procedure.

    - #### setInParameterNames

          public void setInParameterNames(Set<String> inParameterNames)

      Set the names of in parameters to be used.

    - #### getInParameterNames

          public Set<String> getInParameterNames()

      Get the names of in parameters to be used.

    - #### setCatalogName

          public void setCatalogName(String catalogName)

      Set the catalog name to use.

    - #### getCatalogName

          public String getCatalogName()

      Get the catalog name used.

    - #### setSchemaName

          public void setSchemaName(String schemaName)

      Set the schema name to use,

    - #### getSchemaName

          public String getSchemaName()

      Get the schema name used.

    - #### setFunction

          public void setFunction(boolean function)

      Specify whether this call is a function call.

    - #### isFunction

          public boolean isFunction()

      Is this call a function call?

    - #### setReturnValueRequired

          public void setReturnValueRequired(boolean b)

      Specify whether the call requires a rerurn value.

    - #### isReturnValueRequired

          public boolean isReturnValueRequired()

      Does the call require a return value?

    - #### addDeclaredParameter

          public void addDeclaredParameter(SqlParameter parameter)

      Add a declared parameter to the list of parameters for the call. Only parameters declared as `SqlParameter` and `SqlInOutParameter` will be used to provide input values. This is different from the `StoredProcedure` class which for backwards compatibility reasons allows input values to be provided for parameters declared as `SqlOutParameter`.
      Parameters:
        `parameter` - the `SqlParameter` to add

    - #### addDeclaredRowMapper

          public void addDeclaredRowMapper(String parameterName,
                                  RowMapper rowMapper)

      Add a `RowMapper` for the specified parameter or column.
      Parameters:
        `parameterName` - name of parameter or column
        `rowMapper` - the RowMapper implementation to use

    - #### addDeclaredRowMapper

          @Deprecated
          public void addDeclaredRowMapper(String parameterName,
                                             ParameterizedRowMapper rowMapper)

      Deprecated. in favor of `addDeclaredRowMapper(String, org.springframework.jdbc.core.RowMapper)`
      Add a `RowMapper` for the specified parameter or column.

    - #### getCallString

          public String getCallString()

      Get the call string that should be used based on parameters and meta data.

    - #### setAccessCallParameterMetaData

          public void setAccessCallParameterMetaData(boolean accessCallParameterMetaData)

      Specify whether the parameter metadata for the call should be used. The default is true.

    - #### compile

          public final void compile()
                             throws InvalidDataAccessApiUsageException

      Compile this JdbcCall using provided parameters and meta data plus other settings. This finalizes the configuration for this object and subsequent attempts to compile are ignored. This will be implicitly called the first time an un-compiled call is executed.
      Throws:
        `InvalidDataAccessApiUsageException` - if the object hasn't been correctly initialized, for example if no DataSource has been provided

    - #### compileInternal

          protected void compileInternal()

      Method to perform the actual compilation. Subclasses can override this template method to perform their own compilation. Invoked after this base class's compilation is complete.

    - #### onCompileInternal

          protected void onCompileInternal()

      Hook method that subclasses may override to react to compilation. This implementation does nothing.

    - #### isCompiled

          public boolean isCompiled()

      Is this operation "compiled"?
      Returns:
        whether this operation is compiled, and ready to use.

    - #### checkCompiled

          protected void checkCompiled()

      Check whether this operation has been compiled already; lazily compile it if not already compiled.

      Automatically called by `doExecute`.

    - #### doExecute

          protected Map<String,Object> doExecute(SqlParameterSource parameterSource)

      Method that provides execution of the call using the passed in `SqlParameterSource`
      Parameters:
        `parameterSource` - parameter names and values to be used in call
      Returns:
        Map of out parameters

    - #### doExecute

          protected Map<String,Object> doExecute(Object[] args)

      Method that provides execution of the call using the passed in array of parameters
      Parameters:
        `args` - array of parameter values; order must match the order declared for the stored procedure
      Returns:
        Map of out parameters

    - #### doExecute

          protected Map<String,Object> doExecute(Map<String,?> args)

      Method that provides execution of the call using the passed in Map of parameters
      Parameters:
        `args` - Map of parameter name and values
      Returns:
        Map of out parameters

    - #### getScalarOutParameterName

          protected String getScalarOutParameterName()

      Get the name of a single out parameter or return value. Used for functions or procedures with one out parameter.

    - #### matchInParameterValuesWithCallParameters

          protected Map<String,Object> matchInParameterValuesWithCallParameters(SqlParameterSource parameterSource)

      Match the provided in parameter values with registered parameters and parameters defined via metadata processing.
      Parameters:
        `parameterSource` - the parameter vakues provided as a `SqlParameterSource`
      Returns:
        Map with parameter names and values

    - #### matchInParameterValuesWithCallParameters

          protected Map<String,?> matchInParameterValuesWithCallParameters(Map<String,?> args)

      Match the provided in parameter values with registered parameters and parameters defined via metadata processing.
      Parameters:
        `args` - the parameter values provided in a Map
      Returns:
        Map with parameter names and values

    - #### getCallParameters

          protected List<SqlParameter> getCallParameters()

      Get a List of all the call parameters to be used for call. This includes any parameters added based on meta data processing.