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

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

Introduction

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

Prototype

public void setGroupClause(String groupClause) 

Source Link

Document

The setter for the group by clause

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;// w w  w .  java2s .co  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);
}