Class JdbcBatchItemWriter<T>

  • All Implemented Interfaces:
    ItemWriter<T>, org.springframework.beans.factory.InitializingBean

    public class JdbcBatchItemWriter<T>
    extends java.lang.Object
    implements ItemWriter<T>, org.springframework.beans.factory.InitializingBean

    ItemWriter that uses the batching features from NamedParameterJdbcTemplate to execute a batch of statements for all items provided.

    The user must provide an SQL query and a special callback for either of ItemPreparedStatementSetter or ItemSqlParameterSourceProvider. You can use either named parameters or the traditional '?' placeholders. If you use the named parameter support then you should provide a ItemSqlParameterSourceProvider, otherwise you should provide a ItemPreparedStatementSetter. This callback would be responsible for mapping the item to the parameters needed to execute the SQL statement.
    It is expected that write(List) is called inside a transaction.
    The writer is thread-safe after its properties are set (normal singleton behavior), so it can be used to write in multiple concurrent transactions.
    Since:
    2.0
    Author:
    Dave Syer, Thomas Risberg, Michael Minella
    • Field Detail

      • logger

        protected static final org.apache.commons.logging.Log logger
    • Constructor Detail

      • JdbcBatchItemWriter

        public JdbcBatchItemWriter()
    • Method Detail

      • setAssertUpdates

        public void setAssertUpdates​(boolean assertUpdates)
        Public setter for the flag that determines whether an assertion is made that all items cause at least one row to be updated.
        Parameters:
        assertUpdates - the flag to set. Defaults to true;
      • setSql

        public void setSql​(java.lang.String sql)
        Public setter for the query string to execute on write. The parameters should correspond to those known to the ItemPreparedStatementSetter.
        Parameters:
        sql - the query to set
      • setDataSource

        public void setDataSource​(javax.sql.DataSource dataSource)
        Public setter for the data source for injection purposes.
        Parameters:
        dataSource - DataSource to use for querying against
      • setJdbcTemplate

        public void setJdbcTemplate​(org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations namedParameterJdbcTemplate)
        Public setter for the NamedParameterJdbcOperations.
        Parameters:
        namedParameterJdbcTemplate - the NamedParameterJdbcOperations to set
      • afterPropertiesSet

        public void afterPropertiesSet()
        Check mandatory properties - there must be a SimpleJdbcTemplate and an SQL statement plus a parameter source.
        Specified by:
        afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      • write

        public void write​(java.util.List<? extends T> items)
                   throws java.lang.Exception
        Description copied from interface: ItemWriter
        Process the supplied data element. Will not be called with any null items in normal operation.
        Specified by:
        write in interface ItemWriter<T>
        Parameters:
        items - items to be written
        Throws:
        java.lang.Exception - if there are errors. The framework will catch the exception and convert or rethrow it as appropriate.