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

This class provides the processing arrangement for `SimpleJdbcCall`.

Since:
  2.5
Author:
  Thomas Risberg, Juergen Hoeller

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`
Logger available to subclasses.

## Constructor Summary

Constructors
Modifier
Constructor
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

Modifier and Type
Method
Description
`void`
`addDeclaredParameter(SqlParameter parameter)`
Add a declared parameter to the list of parameters for the call.
`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.
`final void`
`compile()`
Compile this JdbcCall using provided parameters and meta-data plus other settings.
`protected void`
`compileInternal()`
Delegate method to perform the actual compilation.
`protected Map<String,Object>`
`doExecute(Object... args)`
Delegate method that executes the call using the passed-in array of parameters.
`protected Map<String,Object>`
`doExecute(Map<String,?> args)`
Delegate method that executes the call using the passed-in Map of parameters.
`protected Map<String,Object>`
`doExecute(SqlParameterSource parameterSource)`
Delegate method that executes 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`
`isNamedBinding()`
Should parameters be bound by name?
`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 meta-data processing.
`protected Map<String,Object>`
`matchInParameterValuesWithCallParameters(SqlParameterSource parameterSource)`
Match the provided in parameter values with registered parameters and parameters defined via meta-data processing.
`protected void`
`onCompileInternal()`
Hook method that subclasses may override to react to compilation.
`void`
`setAccessCallParameterMetaData(boolean accessCallParameterMetaData)`
Specify whether the parameter meta-data 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`
`setNamedBinding(boolean namedBinding)`
Specify whether parameters should be bound by name.
`void`
`setProcedureName(String procedureName)`
Set the name of the stored procedure.
`void`
`setReturnValueRequired(boolean returnValueRequired)`
Specify whether the call requires a return 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 Details

### logger

protected final org.apache.commons.logging.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()
Get the `CallableStatementCreatorFactory` being used.

### 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 org.springframework.dao.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:
  `org.springframework.dao.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 as a Map
Returns:
  a Map with parameter names and values