[英]How do I stop processing rows in Spring-JDBC?
我有一个消费者可以说他不想处理更多数据。
我已经查看了 Spring JdbcTemplate
的方法,但是我看不到在回调时通知 Spring 我不想处理更多行的方法。
我可以抛出异常,但是jdbcTemplate.query(...)
会重新抛出这个异常,这是我不希望的行为。
有没有办法强制停止处理行而不会导致异常?
jdbc.query(sql, new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException
{
// TODO how to stop if I want to do it here?
}}
);
(如果有人来到这个线程) - 使用 ResultSetExtractor。 在 while 条件下循环结果集并在需要时中断。
Set<String> distinctNames = jdbcTemplate.query(query,
new ResultSetExtractor<Set<String>>(){
public Set<String> extractData(ResultSet rs) throws SQLException, DataAccessException {
Set<String> distinctNames = new HashSet<>();
Integer cacheMax = 1000
while(rs.next() && distinctNames.size() <= cacheMax){
// magic is in while loop condition to break out when we want ignoring rest of results from DB.
distinctNames.add(rs.getString("COLUMN_NAME"));
}
return distinctNames;
}
});
您是否最终弄清楚了这一点?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.