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 java.lang.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 Summary

      Fields 
      Modifier and Type Field and Description
      protected Log logger
      Logger available to subclasses.
    • Constructor Summary

      Constructors 
      Modifier Constructor and Description
      protected AbstractJdbcCall(javax.sql.DataSource dataSource)
      Constructor to be used when initializing using a DataSource.
      protected AbstractJdbcCall(JdbcTemplate jdbcTemplate)
      Constructor to be used when initializing using a JdbcTemplate.
    • Field Detail

      • logger

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

      • AbstractJdbcCall

        protected AbstractJdbcCall(javax.sql.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

      • setProcedureName

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

        @Nullable
        public java.lang.String getProcedureName()
        Get the name of the stored procedure.
      • setInParameterNames

        public void setInParameterNames(java.util.Set<java.lang.String> inParameterNames)
        Set the names of in parameters to be used.
      • getInParameterNames

        public java.util.Set<java.lang.String> getInParameterNames()
        Get the names of in parameters to be used.
      • setCatalogName

        public void setCatalogName(@Nullable
                                   java.lang.String catalogName)
        Set the catalog name to use.
      • getCatalogName

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

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

        @Nullable
        public java.lang.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 java.lang.String getCallString()
        Get the call string that should be used based on parameters and meta-data.
      • 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(java.lang.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 doExecute.

      • doExecute

        protected java.util.Map<java.lang.String,java.lang.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 java.util.Map<java.lang.String,java.lang.Object> doExecute(java.lang.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 java.util.Map<java.lang.String,java.lang.Object> doExecute(java.util.Map<java.lang.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 java.lang.String getScalarOutParameterName()
        Get the name of a single out parameter or return value. Used for functions or procedures with one out parameter.
      • getCallParameters

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

        protected java.util.Map<java.lang.String,?> matchInParameterValuesWithCallParameters(java.util.Map<java.lang.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