Class SqlFunction<T>
- Type Parameters:
- T- the result type
- All Implemented Interfaces:
- InitializingBean
Intended to use to call SQL functions that return a single result using a query like "select user()" or "select sysdate from dual". It is not intended for calling more complex stored functions or for using a CallableStatement to invoke a stored procedure or stored function. Use StoredProcedure or SqlCall for this type of processing.
This is a concrete class, which there is often no need to subclass.
 Code using this package can create an object of this type, declaring SQL
 and parameters, and then invoke the appropriate run method
 repeatedly to execute the function. Subclasses are only supposed to add
 specialized run methods for specific parameter and return types.
 
Like all RdbmsOperation objects, SqlFunction objects are thread-safe.
- Author:
- Rod Johnson, Juergen Hoeller, Jean-Pierre Pawlak
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from class org.springframework.jdbc.object.MappingSqlQueryWithParametersMappingSqlQueryWithParameters.RowMapperImpl
- 
Field SummaryFields inherited from class org.springframework.jdbc.object.RdbmsOperationlogger
- 
Constructor SummaryConstructorsConstructorDescriptionConstructor to allow use as a JavaBean.SqlFunction(DataSource ds, String sql) Create a new SqlFunction object with SQL, but without parameters.SqlFunction(DataSource ds, String sql, int[] types) Create a new SqlFunction object with SQL and parameters.SqlFunction(DataSource ds, String sql, int[] types, Class<T> resultType) Create a new SqlFunction object with SQL, parameters and a result type.
- 
Method SummaryModifier and TypeMethodDescriptionprotected TThis implementation of this method extracts a single value from the single row returned by the function.intrun()Convenient method to run the function without arguments.intrun(int parameter) Convenient method to run the function with a single int argument.intAnalogous to the SqlQuery.execute([]) method.Convenient method to run the function without arguments, returning the value as an object.runGeneric(int parameter) Convenient method to run the function with a single int argument.runGeneric(Object[] parameters) Analogous to theSqlQuery.findObject(Object[])method.voidsetResultType(Class<T> resultType) Specify the type that the result object is required to match.Methods inherited from class org.springframework.jdbc.object.MappingSqlQuerymapRowMethods inherited from class org.springframework.jdbc.object.MappingSqlQueryWithParametersnewRowMapperMethods inherited from class org.springframework.jdbc.object.SqlQueryexecute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, executeByNamedParam, executeByNamedParam, findObject, findObject, findObject, findObject, findObject, findObject, findObject, findObject, findObject, findObject, findObjectByNamedParam, findObjectByNamedParam, getRowsExpected, setRowsExpectedMethods inherited from class org.springframework.jdbc.object.SqlOperationcompileInternal, getParsedSql, newPreparedStatementCreator, newPreparedStatementCreator, newPreparedStatementSetter, onCompileInternalMethods inherited from class org.springframework.jdbc.object.RdbmsOperationafterPropertiesSet, allowsUnusedParameters, checkCompiled, compile, declareParameter, getDeclaredParameters, getGeneratedKeysColumnNames, getJdbcTemplate, getResultSetType, getSql, isCompiled, isReturnGeneratedKeys, isUpdatableResults, resolveSql, setDataSource, setFetchSize, setGeneratedKeysColumnNames, setJdbcTemplate, setMaxRows, setParameters, setQueryTimeout, setResultSetType, setReturnGeneratedKeys, setSql, setTypes, setUpdatableResults, supportsLobParameters, validateNamedParameters, validateParameters
- 
Constructor Details- 
SqlFunctionpublic SqlFunction()Constructor to allow use as a JavaBean. A DataSource, SQL and any parameters must be supplied before invoking thecompilemethod and using this object.
- 
SqlFunctionCreate a new SqlFunction object with SQL, but without parameters. Must add parameters or settle with none.- Parameters:
- ds- the DataSource to obtain connections from
- sql- the SQL to execute
 
- 
SqlFunctionCreate a new SqlFunction object with SQL and parameters.- Parameters:
- ds- the DataSource to obtain connections from
- sql- the SQL to execute
- types- the SQL types of the parameters, as defined in the- java.sql.Typesclass
- See Also:
 
- 
SqlFunctionCreate a new SqlFunction object with SQL, parameters and a result type.- Parameters:
- ds- the DataSource to obtain connections from
- sql- the SQL to execute
- types- the SQL types of the parameters, as defined in the- java.sql.Typesclass
- resultType- the type that the result object is required to match
- See Also:
 
 
- 
- 
Method Details- 
setResultTypeSpecify the type that the result object is required to match.If not specified, the result value will be exposed as returned by the JDBC driver. 
- 
mapRowThis implementation of this method extracts a single value from the single row returned by the function. If there are a different number of rows returned, this is treated as an error.- Specified by:
- mapRowin class- MappingSqlQuery<T>
- Parameters:
- rs- the ResultSet we're working through
- rowNum- row number (from 0) we're up to
- Returns:
- an object of the result type
- Throws:
- SQLException- if there's an error extracting data. Subclasses can simply not catch SQLExceptions, relying on the framework to clean up.
 
- 
runpublic int run()Convenient method to run the function without arguments.- Returns:
- the value of the function
 
- 
runpublic int run(int parameter) Convenient method to run the function with a single int argument.- Parameters:
- parameter- single int parameter
- Returns:
- the value of the function
 
- 
runAnalogous to the SqlQuery.execute([]) method. This is a generic method to execute a query, taken a number of arguments.- Parameters:
- parameters- array of parameters. These will be objects or object wrapper types for primitives.
- Returns:
- the value of the function
 
- 
runGenericConvenient method to run the function without arguments, returning the value as an object.- Returns:
- the value of the function
 
- 
runGenericConvenient method to run the function with a single int argument.- Parameters:
- parameter- single int parameter
- Returns:
- the value of the function as an Object
 
- 
runGenericAnalogous to theSqlQuery.findObject(Object[])method. This is a generic method to execute a query, taken a number of arguments.- Parameters:
- parameters- array of parameters. These will be objects or object wrapper types for primitives.
- Returns:
- the value of the function, as an Object
- See Also:
 
 
-