Class MongoPagingItemReader<T>
- Type Parameters:
T
- type of items to read
- All Implemented Interfaces:
ItemReader<T>
,ItemStream
,ItemStreamReader<T>
,org.springframework.beans.factory.InitializingBean
Restartable ItemReader
that reads documents from MongoDB via a paging
technique.
If you set JSON String query setQuery(String)
then it executes the JSON to
retrieve the requested documents.
If you set Query object setQuery(Query)
then it executes the Query to retrieve
the requested documents.
The query is executed using paged requests specified in the AbstractPaginatedDataItemReader.setPageSize(int)
.
Additional pages are requested as needed to provide data when the AbstractItemCountingItemStreamItemReader.read()
method is called.
The JSON String query provided supports parameter substitution via ?<index> placeholders where the <index> indicates the index of the parameterValue to substitute.
The implementation is thread-safe between calls to AbstractItemCountingItemStreamItemReader.open(ExecutionContext)
, but
remember to use saveState=false
if used in a multi-threaded client (no
restart available).
- Since:
- 5.1
- Author:
- Michael Minella, Takaaki Iida, Mahmoud Ben Hassine, Parikshit Dutta
-
Field Summary
Fields inherited from class org.springframework.batch.item.data.MongoItemReader
collection, fields, hint, parameterValues, query, queryString, sort, template, type
Fields inherited from class org.springframework.batch.item.data.AbstractPaginatedDataItemReader
page, pageSize, results
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Checks mandatory propertiesprotected org.springframework.data.domain.Sort
convertToSort
(Map<String, org.springframework.data.domain.Sort.Direction> sorts) Method thisItemStreamReader
delegates to for the actual work of reading a page.protected String
replacePlaceholders
(String input, List<Object> values) void
setCollection
(String collection) void
JSON defining the fields to be returned from the matching documents by MongoDB.void
JSON String telling MongoDB what index to use.void
setParameterValues
(List<Object> parameterValues) List
of values to be substituted in for each of the parameters in the query.void
A JSON formatted MongoDB query.void
setQuery
(org.springframework.data.mongodb.core.query.Query query) A Mongo Query to be used.void
Map
of property names/Sort.Direction
values to sort the input by.void
setTargetType
(Class<? extends T> type) The type of object to be returned for eachAbstractItemCountingItemStreamItemReader.read()
call.void
setTemplate
(org.springframework.data.mongodb.core.MongoOperations template) Used to perform operations against the MongoDB instance.Methods inherited from class org.springframework.batch.item.data.AbstractPaginatedDataItemReader
doClose, doOpen, doRead, jumpToItem, setPageSize
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
-
MongoPagingItemReader
public MongoPagingItemReader()Create a newMongoPagingItemReader
.
-
-
Method Details
-
setTemplate
public void setTemplate(org.springframework.data.mongodb.core.MongoOperations template) Description copied from class:MongoItemReader
Used to perform operations against the MongoDB instance. Also handles the mapping of documents to objects.- Overrides:
setTemplate
in classMongoItemReader<T>
- Parameters:
template
- the MongoOperations instance to use- See Also:
-
MongoOperations
-
setQuery
public void setQuery(org.springframework.data.mongodb.core.query.Query query) Description copied from class:MongoItemReader
A Mongo Query to be used.- Overrides:
setQuery
in classMongoItemReader<T>
- Parameters:
query
- Mongo Query to be used.
-
setQuery
Description copied from class:MongoItemReader
A JSON formatted MongoDB query. Parameterization of the provided query is allowed via ?<index> placeholders where the <index> indicates the index of the parameterValue to substitute.- Overrides:
setQuery
in classMongoItemReader<T>
- Parameters:
queryString
- JSON formatted Mongo query
-
setTargetType
Description copied from class:MongoItemReader
The type of object to be returned for eachAbstractItemCountingItemStreamItemReader.read()
call.- Overrides:
setTargetType
in classMongoItemReader<T>
- Parameters:
type
- the type of object to return
-
setParameterValues
Description copied from class:MongoItemReader
List
of values to be substituted in for each of the parameters in the query.- Overrides:
setParameterValues
in classMongoItemReader<T>
- Parameters:
parameterValues
- values
-
setFields
Description copied from class:MongoItemReader
JSON defining the fields to be returned from the matching documents by MongoDB.- Overrides:
setFields
in classMongoItemReader<T>
- Parameters:
fields
- JSON string that identifies the fields to sort by.
-
setSort
Description copied from class:MongoItemReader
Map
of property names/Sort.Direction
values to sort the input by.- Overrides:
setSort
in classMongoItemReader<T>
- Parameters:
sorts
- map of properties and direction to sort each.
-
setCollection
- Overrides:
setCollection
in classMongoItemReader<T>
- Parameters:
collection
- Mongo collection to be queried.
-
setHint
Description copied from class:MongoItemReader
JSON String telling MongoDB what index to use.- Overrides:
setHint
in classMongoItemReader<T>
- Parameters:
hint
- string indicating what index to use.
-
afterPropertiesSet
Description copied from class:MongoItemReader
Checks mandatory properties- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Overrides:
afterPropertiesSet
in classMongoItemReader<T>
- Throws:
Exception
- See Also:
-
InitializingBean.afterPropertiesSet()
-
doPageRead
Description copied from class:AbstractPaginatedDataItemReader
Method thisItemStreamReader
delegates to for the actual work of reading a page. Each time this method is called, the resultingIterator
should contain the items read within the next page.
If theIterator
is empty or null when it is returned, thisItemReader
will assume that the input has been exhausted.- Overrides:
doPageRead
in classMongoItemReader<T>
- Returns:
- an
Iterator
containing the items within a page.
-
replacePlaceholders
- Overrides:
replacePlaceholders
in classMongoItemReader<T>
-
convertToSort
protected org.springframework.data.domain.Sort convertToSort(Map<String, org.springframework.data.domain.Sort.Direction> sorts) - Overrides:
convertToSort
in classMongoItemReader<T>
-