1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.batch.item.database.support;
18
19 import org.springframework.batch.item.database.PagingQueryProvider;
20 import org.springframework.util.StringUtils;
21
22
23
24
25
26
27
28
29
30 public class Db2PagingQueryProvider extends SqlWindowingPagingQueryProvider {
31
32 @Override
33 public String generateFirstPageQuery(int pageSize) {
34 return SqlPagingQueryUtils.generateLimitSqlQuery(this, false, buildLimitClause(pageSize));
35 }
36
37 @Override
38 public String generateRemainingPagesQuery(int pageSize) {
39 if(StringUtils.hasText(getGroupClause())) {
40 return SqlPagingQueryUtils.generateLimitGroupedSqlQuery(this, true, buildLimitClause(pageSize));
41 }
42 else {
43 return SqlPagingQueryUtils.generateLimitSqlQuery(this, true, buildLimitClause(pageSize));
44 }
45 }
46
47 @Override
48 protected Object getSubQueryAlias() {
49 return "AS TMP_SUB ";
50 }
51
52 private String buildLimitClause(int pageSize) {
53 return new StringBuilder().append("FETCH FIRST ").append(pageSize).append(" ROWS ONLY").toString();
54 }
55
56 }