01: /*
02: * Copyright 2002-2007 the original author or authors.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16:
17: package org.springframework.jdbc.core;
18:
19: import java.sql.ResultSet;
20: import java.sql.SQLException;
21:
22: /**
23: * An interface used by {@link JdbcTemplate} for processing rows of a
24: * {@link java.sql.ResultSet} on a per-row basis. Implementations of
25: * this interface perform the actual work of processing each row
26: * but don't need to worry about exception handling.
27: * {@link java.sql.SQLException SQLExceptions} will be caught and handled
28: * by the calling JdbcTemplate.
29: *
30: * <p>In contrast to a {@link ResultSetExtractor}, a RowCallbackHandler
31: * object is typically stateful: It keeps the result state within the
32: * object, to be available for later inspection. See
33: * {@link RowCountCallbackHandler} for a usage example.
34: *
35: * <p>Consider using a {@link RowMapper} instead if you need to map
36: * exactly one result object per row, assembling them into a List.
37: *
38: * @author Rod Johnson
39: * @author Juergen Hoeller
40: * @see JdbcTemplate
41: * @see RowMapper
42: * @see ResultSetExtractor
43: * @see RowCountCallbackHandler
44: */
45: public interface RowCallbackHandler {
46:
47: /**
48: * Implementations must implement this method to process each row of data
49: * in the ResultSet. This method should not call <code>next()</code> on
50: * the ResultSet; it is only supposed to extract values of the current row.
51: * <p>Exactly what the implementation chooses to do is up to it:
52: * A trivial implementation might simply count rows, while another
53: * implementation might build an XML document.
54: * @param rs the ResultSet to process (pre-initialized for the current row)
55: * @throws SQLException if a SQLException is encountered getting
56: * column values (that is, there's no need to catch SQLException)
57: */
58: void processRow(ResultSet rs) throws SQLException;
59:
60: }
|