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
FieldsModifier and TypeFieldDescriptionprotected @Nullable Stringprotected @Nullable Stringprotected @Nullable Stringprotected @Nullable org.springframework.data.mongodb.core.query.Queryprotected @Nullable Stringprotected @Nullable org.springframework.data.domain.Sortprotected org.springframework.data.mongodb.core.MongoOperationsFields inherited from class org.springframework.batch.item.data.AbstractPaginatedDataItemReader
page, pageSize, results -
Constructor Summary
ConstructorsConstructorDescriptionMongoPagingItemReader(org.springframework.data.mongodb.core.MongoOperations template, Class<? extends T> type) Create a new instance ofMongoPagingItemReader. -
Method Summary
Modifier and TypeMethodDescriptionvoidChecks mandatory propertiesprotected org.springframework.data.domain.SortconvertToSort(Map<String, org.springframework.data.domain.Sort.Direction> sorts) Method thisItemStreamReaderdelegates to for the actual work of reading a page.protected StringreplacePlaceholders(String input, List<Object> values) voidsetCollection(String collection) voidJSON defining the fields to be returned from the matching documents by MongoDB.voidJSON String telling MongoDB what index to use.voidsetParameterValues(List<Object> parameterValues) Listof values to be substituted in for each of the parameters in the query.voidA JSON formatted MongoDB query.voidsetQuery(org.springframework.data.mongodb.core.query.Query query) A Mongo Query to be used.voidMapof property names/Sort.Directionvalues to sort the input by.voidsetTargetType(Class<? extends T> type) The type of object to be returned for eachAbstractItemCountingItemStreamItemReader.read()call.voidsetTemplate(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, setPageSizeMethods inherited from class org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader
close, getCurrentItemCount, isSaveState, open, read, setCurrentItemCount, setMaxItemCount, setSaveState, updateMethods inherited from class org.springframework.batch.item.ItemStreamSupport
getExecutionContextKey, getName, setExecutionContextName, setName
-
Field Details
-
template
protected org.springframework.data.mongodb.core.MongoOperations template -
query
protected @Nullable org.springframework.data.mongodb.core.query.Query query -
queryString
-
type
-
sort
protected @Nullable org.springframework.data.domain.Sort sort -
hint
-
fields
-
collection
-
parameterValues
-
-
Constructor Details
-
MongoPagingItemReader
public MongoPagingItemReader(org.springframework.data.mongodb.core.MongoOperations template, Class<? extends T> type) Create a new instance ofMongoPagingItemReader.- Parameters:
template- theMongoOperationsto usetype- the target type- Since:
- 6.0
-
-
Method Details
-
setQuery
public void setQuery(org.springframework.data.mongodb.core.query.Query query) A Mongo Query to be used.- Parameters:
query- Mongo Query to be used.
-
setTemplate
public void setTemplate(org.springframework.data.mongodb.core.MongoOperations template) Used to perform operations against the MongoDB instance. Also handles the mapping of documents to objects.- Parameters:
template- the MongoOperations instance to use- See Also:
-
MongoOperations
-
setQuery
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.- Parameters:
queryString- JSON formatted Mongo query
-
setTargetType
The type of object to be returned for eachAbstractItemCountingItemStreamItemReader.read()call.- Parameters:
type- the type of object to return
-
setParameterValues
Listof values to be substituted in for each of the parameters in the query.- Parameters:
parameterValues- values
-
setFields
JSON defining the fields to be returned from the matching documents by MongoDB.- Parameters:
fields- JSON string that identifies the fields to sort by.
-
setSort
Mapof property names/Sort.Directionvalues to sort the input by.- Parameters:
sorts- map of properties and direction to sort each.
-
setCollection
- Parameters:
collection- Mongo collection to be queried.
-
setHint
JSON String telling MongoDB what index to use.- Parameters:
hint- string indicating what index to use.
-
doPageRead
Description copied from class:AbstractPaginatedDataItemReaderMethod thisItemStreamReaderdelegates to for the actual work of reading a page. Each time this method is called, the resultingIteratorshould contain the items read within the next page.
If theIteratoris empty when it is returned, thisItemReaderwill assume that the input has been exhausted.- Specified by:
doPageReadin classAbstractPaginatedDataItemReader<T>- Returns:
- an
Iteratorcontaining the items within a page.
-
afterPropertiesSet
Checks mandatory properties- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception- See Also:
-
InitializingBean.afterPropertiesSet()
-
replacePlaceholders
-
convertToSort
-