Class ExpressionEvaluatingSqlParameterSourceFactory
java.lang.Object
org.springframework.integration.util.AbstractExpressionEvaluator
org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory
- All Implemented Interfaces:
Aware
,BeanFactoryAware
,InitializingBean
,SqlParameterSourceFactory
public class ExpressionEvaluatingSqlParameterSourceFactory extends AbstractExpressionEvaluator implements SqlParameterSourceFactory
An implementation of
SqlParameterSourceFactory
which creates
an SqlParameterSource
that evaluates Spring EL expressions.
In addition the user can supply static parameters that always take precedence.- Since:
- 2.0
- Author:
- Dave Syer, Oleg Zhurakousky, Gary Russell, Artem Bilan, Meherzad Lahewala
-
Field Summary
Fields inherited from class org.springframework.integration.util.AbstractExpressionEvaluator
EXPRESSION_PARSER, logger
-
Constructor Summary
Constructors Constructor Description ExpressionEvaluatingSqlParameterSourceFactory()
-
Method Summary
Modifier and Type Method Description SqlParameterSource
createParameterSource(Object input)
Return a newSqlParameterSource
.SqlParameterSource
createParameterSourceNoCache(Object input)
Create an expression evaluatingSqlParameterSource
that does not cache it's results.protected void
onInit()
void
setParameterExpressions(Map<String,String> parameterExpressions)
Optionally maps parameter names to explicit expressions.void
setSqlParameterTypes(Map<String,Integer> sqlParametersTypes)
Specify sql types for the parameters.void
setStaticParameters(Map<String,Object> staticParameters)
Define some static parameter values.Methods inherited from class org.springframework.integration.util.AbstractExpressionEvaluator
afterPropertiesSet, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, getBeanFactory, getEvaluationContext, getEvaluationContext, getMessageBuilderFactory, setBeanFactory, setConversionService
-
Constructor Details
-
ExpressionEvaluatingSqlParameterSourceFactory
public ExpressionEvaluatingSqlParameterSourceFactory()
-
-
Method Details
-
setStaticParameters
Define some static parameter values. These take precedence over those defined as expressions in theparameterExpressions
, so a parameter in the query will be filled from here first, and then from the expressions.- Parameters:
staticParameters
- the static parameters to set
-
setParameterExpressions
Optionally maps parameter names to explicit expressions. The named parameter support in Spring is limited to simple parameter names with no special characters, so this feature allows you to specify a simple name in the SQL query and then have it translated into an expression at runtime. The target of the expression depends on the context: generally in an outbound setting it is a Message, and in an inbound setting it is a result set row (a Map or a domain object if a RowMapper has been provided). Thestatic parameters
can be referred to in an expression using the variable#staticParameters
, for example:Parameter Expressions Samples Key Value (Expression) Example SQL id payload.businessKey
select * from items where id=:id
date headers['timestamp']
select * from items where created>:date
key #staticParameters['foo'].toUpperCase()
select * from items where name=:key
- Parameters:
parameterExpressions
- the parameter expressions to set
-
setSqlParameterTypes
Specify sql types for the parameters. Optional. UseTypes
to get the parameter type value.- Parameters:
sqlParametersTypes
- the parameter types to use- Since:
- 5.0
- See Also:
Types
-
createParameterSource
Description copied from interface:SqlParameterSourceFactory
Return a newSqlParameterSource
.- Specified by:
createParameterSource
in interfaceSqlParameterSourceFactory
- Parameters:
input
- the raw message or query result to be transformed into a SqlParameterSource- Returns:
- The parameter source.
-
createParameterSourceNoCache
Create an expression evaluatingSqlParameterSource
that does not cache it's results. Useful for cases where the source is used multiple times, for example in a<int-jdbc:inbound-channel-adapter/>
for theselect-sql-parameter-source
attribute.- Parameters:
input
- The root object for the evaluation.- Returns:
- The parameter source.
-
onInit
protected void onInit()- Overrides:
onInit
in classAbstractExpressionEvaluator
-