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 meta-data.

This class provides the base SPI for SimpleJdbcCall.

Since:
2.5
Author:
Thomas Risberg, Juergen Hoeller
  • Field Details

    • logger

      protected final Log logger
      Logger available to subclasses.
  • Constructor Details

    • 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 Details

    • getJdbcTemplate

      public JdbcTemplate getJdbcTemplate()
      Get the configured JdbcTemplate.
    • setProcedureName

      public void setProcedureName(@Nullable String procedureName)
      Set the name of the stored procedure.
    • getProcedureName

      @Nullable 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(@Nullable String catalogName)
      Set the catalog name to use.
    • getCatalogName

      @Nullable public String getCatalogName()
      Get the catalog name used.
    • setSchemaName

      public void setSchemaName(@Nullable String schemaName)
      Set the schema name to use.
    • getSchemaName

      @Nullable public String getSchemaName()
      Get the schema name used.
    • setFunction

      public void setFunction(boolean function)
      Specify whether this call is a function call. The default is false.
    • isFunction

      public boolean isFunction()
      Is this call a function call?
    • setReturnValueRequired

      public void setReturnValueRequired(boolean returnValueRequired)
      Specify whether the call requires a return value. The default is false.
    • isReturnValueRequired

      public boolean isReturnValueRequired()
      Does the call require a return value?
    • setNamedBinding

      public void setNamedBinding(boolean namedBinding)
      Specify whether parameters should be bound by name. The default is false.
      Since:
      4.2
    • isNamedBinding

      public boolean isNamedBinding()
      Should parameters be bound by name?
      Since:
      4.2
    • setAccessCallParameterMetaData

      public void setAccessCallParameterMetaData(boolean accessCallParameterMetaData)
      Specify whether the parameter meta-data for the call should be used. The default is true.
    • getCallString

      @Nullable public String getCallString()
      Get the call string that should be used based on parameters and meta-data.
    • getCallableStatementFactory

      protected CallableStatementCreatorFactory getCallableStatementFactory()
    • 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
    • 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()
      Delegate 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 all doExecute(...) methods.

    • doExecute

      protected Map<String,Object> doExecute(SqlParameterSource parameterSource)
      Delegate method that executes the call using the passed-in SqlParameterSource.
      Parameters:
      parameterSource - parameter names and values to be used in call
      Returns:
      a Map of out parameters
    • doExecute

      protected Map<String,Object> doExecute(Object... args)
      Delegate method that executes the call using the passed-in array of parameters.
      Parameters:
      args - array of parameter values. The order of values must match the order declared for the stored procedure.
      Returns:
      a Map of out parameters
    • doExecute

      protected Map<String,Object> doExecute(Map<String,?> args)
      Delegate method that executes the call using the passed-in Map of parameters.
      Parameters:
      args - a Map of parameter name and values
      Returns:
      a Map of out parameters
    • getScalarOutParameterName

      @Nullable protected String getScalarOutParameterName()
      Get the name of a single out parameter or return value. Used for functions or procedures with one out parameter.
    • 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.
    • matchInParameterValuesWithCallParameters

      protected Map<String,Object> matchInParameterValuesWithCallParameters(SqlParameterSource parameterSource)
      Match the provided in parameter values with registered parameters and parameters defined via meta-data processing.
      Parameters:
      parameterSource - the parameter values provided as a SqlParameterSource
      Returns:
      a 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 meta-data processing.
      Parameters:
      args - the parameter values provided in a Map
      Returns:
      a Map with parameter names and values