我想只为一个查询设置fetchSize,我找不到合适的api。
我的代码看起来像这样:
jdbcTemplate.query(query, new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException {...}
);
如何将fetchSize传递给查询?
这可以使用PreparedStatementSetter
(JavaDoc)完成
鉴于查询
select * from mytable where user_id > ?
您可以使用
jdbcTemplate.query(query,
new PreparedStatementSetter() {
@Override
public void setValues(final PreparedStatement ps) throws SQLException {
ps.setInt(1, userId);
ps.setFetchSize(500);
}
},
new RowCallbackHandler() {
@Override
public void processRow(final ResultSet rs) throws SQLException {
...
}
});
或者以更紧凑的形式
jdbcTemplate.query(
query,
ps -> {
ps.setInt(1, userId);
ps.setFetchSize(500);
},
rs -> { ... }
);
请记住
实现负责设置任何必要的参数。 已经提供了带占位符的SQL。
对于单个结果对象,请使用
public <T> T query(String sql,
PreparedStatementSetter pss,
ResultSetExtractor<T> rse) throws DataAccessException;
方法。例如
jdbcTemplate.query(
query,
new ArgumentPreparedStatementSetter(new Object[] {balanceId}),
rs -> {
final String field1 = rs.getString("field1");
// Get other fields and construct the resulting object
return new YourClass(field1, ...);
}
);