BATCH-1346: added test and extra Javadocs to clarify

This commit is contained in:
dsyer
2009-07-28 17:21:03 +00:00
parent 64f9472ad0
commit 3429e41faf
3 changed files with 43 additions and 18 deletions

View File

@@ -26,21 +26,42 @@ import java.util.HashMap;
import com.ibatis.sqlmap.client.SqlMapClient;
/**
* {@link org.springframework.batch.item.ItemReader} for reading database records using iBATIS in a paging
* fashion.
*
* It executes the query specified as the {@link #setQueryId(String)} to retrieve requested data.
* The query is executed using paged requests of a size specified in {@link #setPageSize(int)}.
* Additional pages are requested when needed as {@link #read()} method is called, returning an
* object corresponding to current position.
*
* <p>
* {@link org.springframework.batch.item.ItemReader} for reading database
* records using iBATIS in a paging fashion.
* </p>
*
* <p>
* It executes the query specified as the {@link #setQueryId(String)} to
* retrieve requested data. The query is executed using paged requests of a size
* specified in {@link #setPageSize(int)}. Additional pages are requested when
* needed as {@link #read()} method is called, returning an object corresponding
* to current position. Some standard query parameters are provided by the
* reader and the SQL in the named query must use some or all of these parameters
* (depending on the SQL variant) to construct a result set of the required
* size. The parameters are:
* <ul>
* <li><code>_page</code>: the page number to be read (starting at 0)</li>
* <li><code>_pagesize</code>: the size of the pages, i.e. the number of rows to
* return</li>
* <li><code>_skiprows</code>: the product of <code>_page</code> and
* <code>_pagesize</code></li>
* </ul>
* Failure to write the correct platform-specific SQL often results in an
* infinite loop in the reader because it keeps asking for the next page and
* gets the same result set over and over.
* </p>
*
* <p>
* The performance of the paging depends on the iBATIS implementation.
*
* Setting a fairly large page size and using a commit interval that matches the page size should provide
* better performance.
*
* Setting a fairly large page size and using a commit interval that matches the
* page size should provide better performance.
* </p>
*
* <p>
* The implementation is *not* thread-safe.
*
* </p>
*
* @author Thomas Risberg
* @since 2.0
*/
@@ -68,14 +89,14 @@ public class IbatisPagingItemReader<T> extends AbstractPagingItemReader<T> {
/**
* The parameter values to be used for the query execution.
*
* @param parameterValues the values keyed by the parameter named used in the query string.
*
* @param parameterValues the values keyed by the parameter named used in
* the query string.
*/
public void setParameterValues(Map<String, Object> parameterValues) {
this.parameterValues = parameterValues;
}
/**
* Check mandatory properties.
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()