|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.jdbc.object.RdbmsOperation org.springframework.jdbc.object.SqlOperation org.springframework.jdbc.object.SqlQuery org.springframework.jdbc.object.MappingSqlQueryWithParameters org.springframework.jdbc.object.MappingSqlQuery org.springframework.jdbc.object.SqlFunction
public class SqlFunction
SQL "function" wrapper for a query that returns a single row of results. The default behavior is to return an int, but that can be overridden by using the constructor with an extra return type parameter.
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.
StoredProcedure
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.springframework.jdbc.object.MappingSqlQueryWithParameters |
---|
MappingSqlQueryWithParameters.ResultReaderImpl |
Field Summary |
---|
Fields inherited from class org.springframework.jdbc.object.RdbmsOperation |
---|
logger |
Constructor Summary | |
---|---|
SqlFunction()
Constructor 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 retType)
Deprecated. Use the constructor with a result type Class instead. Note that the current version of SqlFunction will be able to guess the correct result type in my cases, so you often don't even need to specifiy the result type explicitly. |
|
SqlFunction(DataSource ds,
String sql,
int[] types)
Create a new SqlFunction object with SQL and parameters. |
|
SqlFunction(DataSource ds,
String sql,
int[] types,
Class resultType)
Create a new SqlFunction object with SQL, parameters and a result type. |
|
SqlFunction(DataSource ds,
String sql,
int[] types,
int retType)
Deprecated. Use the constructor with a result type Class instead. Note that the current version of SqlFunction will be able to guess the correct result type in my cases, so you often don't even need to specifiy the result type explicitly. |
Method Summary | |
---|---|
protected Object |
mapRow(ResultSet rs,
int rowNum)
This implementation of this method extracts a single value from the single row returned by the function. |
int |
run()
Convenient method to run the function without arguments. |
int |
run(int parameter)
Convenient method to run the function with a single int argument. |
int |
run(Object[] parameters)
Analogous to the SqlQuery.execute([]) method. |
Object |
runGeneric()
Convenient method to run the function without arguments, returning the value as an object. |
Object |
runGeneric(int parameter)
Convenient method to run the function with a single int argument. |
Object |
runGeneric(Object[] parameters)
Analogous to the SqlQuery.findObject(Object[]) method. |
void |
setResultType(Class resultType)
Specify the type that the result object is required to match. |
Methods inherited from class org.springframework.jdbc.object.MappingSqlQuery |
---|
mapRow |
Methods inherited from class org.springframework.jdbc.object.MappingSqlQueryWithParameters |
---|
newResultReader |
Methods inherited from class org.springframework.jdbc.object.SqlQuery |
---|
execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, findObject, findObject, findObject, findObject, findObject, findObject, findObject, findObject, findObject, findObject, getRowsExpected, setRowsExpected |
Methods inherited from class org.springframework.jdbc.object.SqlOperation |
---|
compileInternal, newPreparedStatementCreator, newPreparedStatementSetter, onCompileInternal |
Methods inherited from class org.springframework.jdbc.object.RdbmsOperation |
---|
afterPropertiesSet, allowsUnusedParameters, checkCompiled, compile, declareParameter, getDeclaredParameters, getGeneratedKeysColumnNames, getJdbcTemplate, getResultSetType, getSql, isCompiled, isReturnGeneratedKeys, isUpdatableResults, setDataSource, setFetchSize, setGeneratedKeysColumnNames, setJdbcTemplate, setMaxRows, setResultSetType, setReturnGeneratedKeys, setSql, setTypes, setUpdatableResults, supportsLobParameters, validateParameters |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SqlFunction()
compile
method and using this object.
RdbmsOperation.setDataSource(javax.sql.DataSource)
,
RdbmsOperation.setSql(java.lang.String)
,
RdbmsOperation.compile()
public SqlFunction(DataSource ds, String sql)
ds
- DataSource to obtain connections fromsql
- SQL to executepublic SqlFunction(DataSource ds, String sql, int[] types)
ds
- DataSource to obtain connections fromsql
- SQL to executetypes
- SQL types of the parameters, as defined in the
java.sql.Types
classTypes
public SqlFunction(DataSource ds, String sql, int[] types, Class resultType)
ds
- DataSource to obtain connections fromsql
- SQL to executetypes
- SQL types of the parameters, as defined in the
java.sql.Types
classresultType
- the type that the result object is required to matchsetResultType(Class)
,
Types
public SqlFunction(DataSource ds, String sql, int retType)
ds
- DataSource to obtain connections fromsql
- SQL to executeretType
- SQL type of the return value, as defined in the
java.sql.Types
classSqlFunction(javax.sql.DataSource, String, int[], Class)
public SqlFunction(DataSource ds, String sql, int[] types, int retType)
ds
- DataSource to obtain connections fromsql
- SQL to executetypes
- SQL types of the parameters, as defined in the
java.sql.Types
classretType
- SQL type of the return value, as defined in the
java.sql.Types
classSqlFunction(javax.sql.DataSource, String, int[], Class)
Method Detail |
---|
public void setResultType(Class resultType)
If not specified, the result value will be exposed as returned by the JDBC driver.
protected Object mapRow(ResultSet rs, int rowNum) throws SQLException
mapRow
in class MappingSqlQuery
rs
- ResultSet we're working throughrowNum
- row number (from 0) we're up to
SQLException
- if there's an error extracting data.
Subclasses can simply not catch SQLExceptions, relying on the
framework to clean up.public int run()
public int run(int parameter)
parameter
- single int parameter
public int run(Object[] parameters)
parameters
- array of parameters. These will be objects or
object wrapper types for primitives.
public Object runGeneric()
public Object runGeneric(int parameter)
parameter
- single int parameter
public Object runGeneric(Object[] parameters)
SqlQuery.findObject(Object[])
method.
This is a generic method to execute a query, taken a number of arguments.
parameters
- array of parameters. These will be objects or
object wrapper types for primitives.
SqlQuery.execute(Object[])
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |