Example usage for org.springframework.batch.item.database.support AbstractSqlPagingQueryProvider generateRemainingPagesQuery

List of usage examples for org.springframework.batch.item.database.support AbstractSqlPagingQueryProvider generateRemainingPagesQuery

Introduction

In this page you can find the example usage for org.springframework.batch.item.database.support AbstractSqlPagingQueryProvider generateRemainingPagesQuery.

Prototype

@Override
public abstract String generateRemainingPagesQuery(int pageSize);

Source Link

Document

Method generating the query string to be used for retrieving the pages following the first page.

Usage

From source file:org.springframework.batch.item.database.JdbcPagingQueryIntegrationTests.java

@Test
public void testQueryFromStartWithGroupBy() throws Exception {
    AbstractSqlPagingQueryProvider queryProvider = (AbstractSqlPagingQueryProvider) getPagingQueryProvider();
    Map<String, Order> sortKeys = new LinkedHashMap<String, Order>();
    sortKeys.put("NAME", Order.ASCENDING);
    sortKeys.put("CODE", Order.DESCENDING);
    queryProvider.setSortKeys(sortKeys);
    queryProvider.setSelectClause("select NAME, CODE, sum(VALUE)");
    queryProvider.setGroupClause("NAME, CODE");

    int count = 0;
    int total = 5;

    List<Map<String, Object>> list = jdbcTemplate.queryForList(queryProvider.generateFirstPageQuery(pageSize));
    logger.debug("First page result: " + list);
    assertEquals(pageSize, list.size());
    count += pageSize;/*from  www  .  ja v  a  2  s .  c  o  m*/
    Map<String, Object> oldValues = null;

    while (count < total) {
        Map<String, Object> startAfterValues = getStartAfterValues(queryProvider, list);
        assertNotSame(oldValues, startAfterValues);
        list = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(pageSize),
                getParameterList(null, startAfterValues).toArray());
        count += list.size();

        if (list.size() < pageSize) {
            assertEquals(1, list.size());
        } else {
            assertEquals(pageSize, list.size());
        }
        oldValues = startAfterValues;
    }

    assertEquals(total, count);
}