Class JdbcCursorItemReader<T>
java.lang.Object
org.springframework.batch.item.ItemStreamSupport
org.springframework.batch.item.support.AbstractItemStreamItemReader<T>
org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader<T>
org.springframework.batch.item.database.AbstractCursorItemReader<T>
org.springframework.batch.item.database.JdbcCursorItemReader<T>
- All Implemented Interfaces:
ItemReader<T>
,ItemStream
,ItemStreamReader<T>
,org.springframework.beans.factory.InitializingBean
Simple item reader implementation that opens a JDBC cursor and continually retrieves the next row in the ResultSet.
The statement used to open the cursor is created with the 'READ_ONLY' option since a non read-only cursor may unnecessarily lock tables or rows. It is also opened with 'TYPE_FORWARD_ONLY' option. By default the cursor will be opened using a separate connection which means that it will not participate in any transactions created as part of the step processing.
Each call to AbstractItemCountingItemStreamItemReader.read()
will call the provided RowMapper, passing in the
ResultSet.
This reader is not thread-safe.
- Author:
- Lucas Ward, Peter Zozom, Robert Kasanicky, Thomas Risberg, Mahmoud Ben Hassine
-
Field Summary
Fields inherited from class org.springframework.batch.item.database.AbstractCursorItemReader
log, rs, VALUE_NOT_SET
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Assert that mandatory properties are set.protected void
cleanupOnClose
(Connection connection) Close the cursor and database connection.getSql()
protected void
openCursor
(Connection con) protected T
readCursor
(ResultSet rs, int currentRow) Read the cursor and map to the type of object this reader should return.void
setPreparedStatementSetter
(org.springframework.jdbc.core.PreparedStatementSetter preparedStatementSetter) Set the PreparedStatementSetter to use if any parameter values that need to be set in the supplied query.void
setRowMapper
(org.springframework.jdbc.core.RowMapper<T> rowMapper) Set the RowMapper to be used for all calls to read().void
Set the SQL statement to be used when creating the cursor.Methods inherited from class org.springframework.batch.item.database.AbstractCursorItemReader
applyStatementSettings, doClose, doOpen, doRead, getDataSource, getExceptionTranslator, handleWarnings, initializeConnection, isUseSharedExtendedConnection, jumpToItem, setConnectionAutoCommit, setDataSource, setDriverSupportsAbsolute, setFetchSize, setIgnoreWarnings, setMaxRows, setQueryTimeout, setUseSharedExtendedConnection, setVerifyCursorPosition, translateSqlException
Methods inherited from class org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader
close, getCurrentItemCount, isSaveState, open, read, setCurrentItemCount, setMaxItemCount, setSaveState, update
Methods inherited from class org.springframework.batch.item.ItemStreamSupport
getExecutionContextKey, getName, setExecutionContextName, setName
-
Constructor Details
-
JdbcCursorItemReader
public JdbcCursorItemReader()
-
-
Method Details
-
setRowMapper
Set the RowMapper to be used for all calls to read().- Parameters:
rowMapper
- the mapper used to map each item
-
setSql
Set the SQL statement to be used when creating the cursor. This statement should be a complete and valid SQL statement, as it will be run directly without any modification.- Parameters:
sql
- SQL statement
-
setPreparedStatementSetter
public void setPreparedStatementSetter(org.springframework.jdbc.core.PreparedStatementSetter preparedStatementSetter) Set the PreparedStatementSetter to use if any parameter values that need to be set in the supplied query.- Parameters:
preparedStatementSetter
- PreparedStatementSetter responsible for filling out the statement
-
afterPropertiesSet
Assert that mandatory properties are set.- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Overrides:
afterPropertiesSet
in classAbstractCursorItemReader<T>
- Throws:
IllegalArgumentException
- if either data source or SQL properties not set.Exception
-
openCursor
- Specified by:
openCursor
in classAbstractCursorItemReader<T>
-
readCursor
Description copied from class:AbstractCursorItemReader
Read the cursor and map to the type of object this reader should return. This method must be overridden by subclasses.- Specified by:
readCursor
in classAbstractCursorItemReader<T>
- Parameters:
rs
- The current result setcurrentRow
- Current position of the result set- Returns:
- the mapped object at the cursor position
- Throws:
SQLException
- if interactions with the current result set fail
-
cleanupOnClose
Close the cursor and database connection.- Specified by:
cleanupOnClose
in classAbstractCursorItemReader<T>
- Parameters:
connection
- to the database- Throws:
Exception
- If unable to clean up resources
-
getSql
- Specified by:
getSql
in classAbstractCursorItemReader<T>
-