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

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

Introduction

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

Prototype

public void setSelectClause(String selectClause) 

Source Link

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   w  w  w.j  a v a2 s. c  om*/
    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);
}