我有一个简单的批处理,可以将数据从数据库导出到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行。
在一个步骤中更好的方法是什么?