仅处理查询的第一项

时间:2017-09-14 13:14:24

标签: java spring-batch

我有一个简单的批处理,可以将数据从数据库导出到csv文件。

参数中的查询传递是:

SELECT * FROM MY_TABLE

我想要的是我的批处理步骤仅处理结果查询的10个第一行。 相当于这样的查询:SELECT * FROM MY_TABLE LIMIT 10

目前我在特定的RowMapper中这样做,我在这里定义了这样的方法mapRow

public List<String> mapRow(ResultSet rs, int rowNum) throws SQLException {
    if ( rowNum <= 10) {
        List<String> result = new ArrayList<String>();

        int nbColonnes = rs.getMetaData().getColumnCount();
        for (int i = 1; i < nbColonnes+1; i++) {
            result.add(rs.getString(i));
        }
        return result;
    }
    return null;
}

但是使用这个解决方案,如果我的查询返回10 000行,则批处理10 000行而不是仅10行。

在一个步骤中更好的方法是什么?

0 个答案:

没有答案