Class ExpressionEvaluatingSqlParameterSourceFactory

java.lang.Object
org.springframework.integration.util.AbstractExpressionEvaluator
org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.InitializingBean, SqlParameterSourceFactory

public class ExpressionEvaluatingSqlParameterSourceFactory
extends org.springframework.integration.util.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
  • 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
    org.springframework.jdbc.core.namedparam.SqlParameterSource createParameterSource​(java.lang.Object input)
    Return a new SqlParameterSource.
    org.springframework.jdbc.core.namedparam.SqlParameterSource createParameterSourceNoCache​(java.lang.Object input)
    Create an expression evaluating SqlParameterSource that does not cache it's results.
    protected void onInit()  
    void setParameterExpressions​(java.util.Map<java.lang.String,​java.lang.String> parameterExpressions)
    Optionally maps parameter names to explicit expressions.
    void setSqlParameterTypes​(java.util.Map<java.lang.String,​java.lang.Integer> sqlParametersTypes)
    Specify sql types for the parameters.
    void setStaticParameters​(java.util.Map<java.lang.String,​java.lang.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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • setStaticParameters

      public void setStaticParameters​(java.util.Map<java.lang.String,​java.lang.Object> staticParameters)
      Define some static parameter values. These take precedence over those defined as expressions in the parameterExpressions, 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

      public void setParameterExpressions​(java.util.Map<java.lang.String,​java.lang.String> parameterExpressions)
      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). The static 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

      public void setSqlParameterTypes​(java.util.Map<java.lang.String,​java.lang.Integer> sqlParametersTypes)
      Specify sql types for the parameters. Optional. Use Types to get the parameter type value.
      Parameters:
      sqlParametersTypes - the parameter types to use
      Since:
      5.0
      See Also:
      Types
    • createParameterSource

      public org.springframework.jdbc.core.namedparam.SqlParameterSource createParameterSource​(java.lang.Object input)
      Description copied from interface: SqlParameterSourceFactory
      Return a new SqlParameterSource.
      Specified by:
      createParameterSource in interface SqlParameterSourceFactory
      Parameters:
      input - the raw message or query result to be transformed into a SqlParameterSource
      Returns:
      The parameter source.
    • createParameterSourceNoCache

      public org.springframework.jdbc.core.namedparam.SqlParameterSource createParameterSourceNoCache​(java.lang.Object input)
      Create an expression evaluating SqlParameterSource 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 the select-sql-parameter-source attribute.
      Parameters:
      input - The root object for the evaluation.
      Returns:
      The parameter source.
    • onInit

      protected void onInit()
      Overrides:
      onInit in class org.springframework.integration.util.AbstractExpressionEvaluator