List of usage examples for org.springframework.batch.item.database PagingQueryProvider generateRemainingPagesQuery
String generateRemainingPagesQuery(int pageSize);
From source file:admin.service.JdbcSearchableStepExecutionDao.java
public Collection<StepExecution> findStepExecutions(String jobName, String stepName, int start, int count) { String whereClause;/*from w ww. j av a 2s .c o m*/ if (jobName.contains("*")) { whereClause = "JOB_NAME like ?"; jobName = jobName.replace("*", "%"); } else { whereClause = "JOB_NAME = ?"; } if (stepName.contains("*")) { whereClause = whereClause + " AND STEP_NAME like ?"; stepName = stepName.replace("*", "%"); } else { whereClause = whereClause + " AND STEP_NAME = ?"; } PagingQueryProvider queryProvider = getPagingQueryProvider(whereClause); List<StepExecution> stepExecutions; if (start <= 0) { stepExecutions = getJdbcTemplate().query(queryProvider.generateFirstPageQuery(count), new StepExecutionRowMapper(), jobName, stepName); } else { try { Long startAfterValue = getJdbcTemplate().queryForObject( queryProvider.generateJumpToItemQuery(start, count), Long.class, jobName, stepName); stepExecutions = getJdbcTemplate().query(queryProvider.generateRemainingPagesQuery(count), new StepExecutionRowMapper(), jobName, stepName, startAfterValue); } catch (IncorrectResultSizeDataAccessException e) { return Collections.emptyList(); } } return stepExecutions; }
From source file:org.springframework.batch.item.database.JdbcPagingQueryIntegrationTests.java
@Test public void testQueryFromStart() throws Exception { PagingQueryProvider queryProvider = getPagingQueryProvider(); int total = JdbcTestUtils.countRowsInTable(jdbcTemplate, "T_FOOS"); assertTrue(total > pageSize);// w ww . j a v a 2 s . c o m int pages = total / pageSize; int count = 0; List<Map<String, Object>> list = jdbcTemplate.queryForList(queryProvider.generateFirstPageQuery(pageSize)); logger.debug("First page result: " + list); assertEquals(pageSize, list.size()); count += pageSize; Map<String, Object> oldValues = null; while (count < pages * pageSize) { Map<String, Object> startAfterValues = getStartAfterValues(queryProvider, list); assertNotSame(oldValues, startAfterValues); list = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(pageSize), getParameterList(null, startAfterValues).toArray()); assertEquals(pageSize, list.size()); count += pageSize; oldValues = startAfterValues; } if (count < total) { Map<String, Object> startAfterValues = getStartAfterValues(queryProvider, list); list = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(pageSize), getParameterList(null, startAfterValues).toArray()); assertEquals(total - pages * pageSize, list.size()); count += list.size(); } assertEquals(total, count); }
From source file:org.springframework.batch.item.database.JdbcPagingQueryIntegrationTests.java
@Test @Ignore/*from w w w. ja v a 2s . com*/ public void testJumpToItem() throws Exception { PagingQueryProvider queryProvider = getPagingQueryProvider(); int minId = jdbcTemplate.queryForObject("SELECT MIN(VALUE) FROM T_FOOS", Integer.class); String query = queryProvider.generateJumpToItemQuery(pageSize, pageSize); List<Map<String, Object>> list = jdbcTemplate.queryForList(query); logger.debug("Jump to page result: " + list); assertEquals(1, list.size()); System.err.println(list); String expected = "[{value=" + (minId + pageSize - 1); assertEquals(expected, list.toString().toLowerCase().substring(0, expected.length())); Object startAfterValue = list.get(0).entrySet().iterator().next().getValue(); list = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(pageSize), startAfterValue); assertEquals(pageSize, list.size()); expected = "[{id=" + (minId + pageSize); }