Java 当主键是字符串时,如何在Spring批处理中使用JdbcPagingItemReader?

Java 当主键是字符串时,如何在Spring批处理中使用JdbcPagingItemReader?,java,spring-batch,spring-jdbc,Java,Spring Batch,Spring Jdbc,我有一些SQL数据需要在SpringBatch中使用ItemReader访问。我认为那/会是最合适的 我从中选择的表有一个主键,它是由三列组成的:INTEGER、VARCHAR和VARCHAR。实际上,对于这个用例,前两列对于给定作业中的每个记录都是相同的。因此,实际上就好像主键列是一个VARCHAR 接口定义要求: @Override public String generateJumpToItemQuery(int itemIndex, int pageSize) { } 我必须承认,我

我有一些SQL数据需要在SpringBatch中使用ItemReader访问。我认为那/会是最合适的

我从中选择的表有一个主键,它是由三列组成的:INTEGER、VARCHAR和VARCHAR。实际上,对于这个用例,前两列对于给定作业中的每个记录都是相同的。因此,实际上就好像主键列是一个VARCHAR

接口定义要求:

@Override
public String generateJumpToItemQuery(int itemIndex, int pageSize) {

}
我必须承认,我不认为这些文档在这种情况下特别有用。它似乎相当简洁,并作出了许多假设。但这里是关于这种特殊方法的说明:

生成将提供跳转到项目查询的查询。提供的ItEdMeindex可以位于页面的中间,并与页面大小一起使用,以计算前一页的最后一个索引,以便能够检索该行的排序关键字。 我不喜欢文档假定我知道什么是“跳转到项目查询”,而不定义它。因为。。。我不!什么是“跳转到项目查询”?我假设这是从一个范例操作的,在这个范例中,表是用数字ID排序的?或者这是否与LIMIT子句中的skip值有关


非常感谢您提供的任何指导。

从所提供的实现来看,这是非常清楚的。下面是PostgresPagingQueryProvider:

@Override
public String generateJumpToItemQuery(int itemIndex, int pageSize) {
    int page = itemIndex / pageSize;
    int offset = (page * pageSize) - 1;
    offset = offset<0 ? 0 : offset;
    String limitClause = new StringBuilder().append("LIMIT 1 OFFSET ").append(offset).toString();
    return SqlPagingQueryUtils.generateLimitJumpToQuery(this, limitClause);
}
@覆盖
公共字符串GenerateCumpToItemQuery(int itemIndex,int pageSize){
int page=项目索引/页面大小;
int offset=(页面*页面大小)-1;
偏移量=偏移量