org.springframework.jdbc.support.rowset

Class ResultSetWrappingSqlRowSet

  • java.lang.Object
    • org.springframework.jdbc.support.rowset.ResultSetWrappingSqlRowSet
  • All Implemented Interfaces:
    java.io.Serializable, SqlRowSet


    public class ResultSetWrappingSqlRowSet
    extends java.lang.Object
    implements SqlRowSet
    The default implementation of Spring's SqlRowSet interface, wrapping a ResultSet, catching any SQLExceptions and translating them to a corresponding Spring InvalidResultSetAccessException.

    The passed-in ResultSet should already be disconnected if the SqlRowSet is supposed to be usable in a disconnected fashion. This means that you will usually pass in a javax.sql.rowset.CachedRowSet, which implements the ResultSet interface.

    Note: Since JDBC 4.0, it has been clarified that any methods using a String to identify the column should be using the column label. The column label is assigned using the ALIAS keyword in the SQL query string. When the query doesn't use an ALIAS, the default label is the column name. Most JDBC ResultSet implementations follow this new pattern but there are exceptions such as the com.sun.rowset.CachedRowSetImpl class which only uses the column name, ignoring any column labels. As of Spring 3.0.5, ResultSetWrappingSqlRowSet will translate column labels to the correct column index to provide better support for the com.sun.rowset.CachedRowSetImpl which is the default implementation used by JdbcTemplate when working with RowSets.

    Note: This class implements the java.io.Serializable marker interface through the SqlRowSet interface, but is only actually serializable if the disconnected ResultSet/RowSet contained in it is serializable. Most CachedRowSet implementations are actually serializable, so this should usually work out.

    Since:
    1.2
    Author:
    Thomas Risberg, Juergen Hoeller
    See Also:
    ResultSet, CachedRowSet, JdbcTemplate.queryForRowSet(java.lang.String), Serialized Form
    • Constructor Summary

      Constructors 
      Constructor and Description
      ResultSetWrappingSqlRowSet(java.sql.ResultSet resultSet)
      Create a new ResultSetWrappingSqlRowSet for the given ResultSet.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      boolean absolute(int row)
      Move the cursor to the given row number in the row set, just after the last row.
      void afterLast()
      Move the cursor to the end of this row set.
      void beforeFirst()
      Move the cursor to the front of this row set, just before the first row.
      int findColumn(java.lang.String columnLabel)
      Map the given column label to its column index.
      boolean first()
      Move the cursor to the first row of this row set.
      java.math.BigDecimal getBigDecimal(int columnIndex)
      Retrieve the value of the indicated column in the current row as a BigDecimal object.
      java.math.BigDecimal getBigDecimal(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a BigDecimal object.
      boolean getBoolean(int columnIndex)
      Retrieve the value of the indicated column in the current row as a boolean.
      boolean getBoolean(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a boolean.
      byte getByte(int columnIndex)
      Retrieve the value of the indicated column in the current row as a byte.
      byte getByte(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a byte.
      java.sql.Date getDate(int columnIndex)
      Retrieve the value of the indicated column in the current row as a Date object.
      java.sql.Date getDate(int columnIndex, java.util.Calendar cal)
      Retrieve the value of the indicated column in the current row as a Date object.
      java.sql.Date getDate(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a Date object.
      java.sql.Date getDate(java.lang.String columnLabel, java.util.Calendar cal)
      Retrieve the value of the indicated column in the current row as a Date object.
      double getDouble(int columnIndex)
      Retrieve the value of the indicated column in the current row as a Double object.
      double getDouble(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a Double object.
      float getFloat(int columnIndex)
      Retrieve the value of the indicated column in the current row as a float.
      float getFloat(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a float.
      int getInt(int columnIndex)
      Retrieve the value of the indicated column in the current row as an int.
      int getInt(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as an int.
      long getLong(int columnIndex)
      Retrieve the value of the indicated column in the current row as a long.
      long getLong(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a long.
      SqlRowSetMetaData getMetaData()
      Retrieve the meta-data, i.e.
      java.lang.String getNString(int columnIndex)
      Retrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).
      java.lang.String getNString(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).
      java.lang.Object getObject(int columnIndex)
      Retrieve the value of the indicated column in the current row as an Object.
      <T> T getObject(int columnIndex, java.lang.Class<T> type)
      Retrieve the value of the indicated column in the current row as an Object.
      java.lang.Object getObject(int columnIndex, java.util.Map<java.lang.String,java.lang.Class<?>> map)
      Retrieve the value of the indicated column in the current row as an Object.
      java.lang.Object getObject(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as an Object.
      <T> T getObject(java.lang.String columnLabel, java.lang.Class<T> type)
      Retrieve the value of the indicated column in the current row as an Object.
      java.lang.Object getObject(java.lang.String columnLabel, java.util.Map<java.lang.String,java.lang.Class<?>> map)
      Retrieve the value of the indicated column in the current row as an Object.
      java.sql.ResultSet getResultSet()
      Return the underlying ResultSet (usually a javax.sql.rowset.CachedRowSet).
      int getRow()
      Retrieve the current row number.
      short getShort(int columnIndex)
      Retrieve the value of the indicated column in the current row as a short.
      short getShort(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a short.
      java.lang.String getString(int columnIndex)
      Retrieve the value of the indicated column in the current row as a String.
      java.lang.String getString(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a String.
      java.sql.Time getTime(int columnIndex)
      Retrieve the value of the indicated column in the current row as a Time object.
      java.sql.Time getTime(int columnIndex, java.util.Calendar cal)
      Retrieve the value of the indicated column in the current row as a Time object.
      java.sql.Time getTime(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a Time object.
      java.sql.Time getTime(java.lang.String columnLabel, java.util.Calendar cal)
      Retrieve the value of the indicated column in the current row as a Time object.
      java.sql.Timestamp getTimestamp(int columnIndex)
      Retrieve the value of the indicated column in the current row as a Timestamp object.
      java.sql.Timestamp getTimestamp(int columnIndex, java.util.Calendar cal)
      Retrieve the value of the indicated column in the current row as a Timestamp object.
      java.sql.Timestamp getTimestamp(java.lang.String columnLabel)
      Retrieve the value of the indicated column in the current row as a Timestamp object.
      java.sql.Timestamp getTimestamp(java.lang.String columnLabel, java.util.Calendar cal)
      Retrieve the value of the indicated column in the current row as a Timestamp object.
      boolean isAfterLast()
      Retrieve whether the cursor is after the last row of this row set.
      boolean isBeforeFirst()
      Retrieve whether the cursor is before the first row of this row set.
      boolean isFirst()
      Retrieve whether the cursor is on the first row of this row set.
      boolean isLast()
      Retrieve whether the cursor is on the last row of this row set.
      boolean last()
      Move the cursor to the last row of this row set.
      boolean next()
      Move the cursor to the next row.
      boolean previous()
      Move the cursor to the previous row.
      boolean relative(int rows)
      Move the cursor a relative number of rows, either positive or negative.
      boolean wasNull()
      Report whether the last column read had a value of SQL NULL.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • getResultSet

        public final java.sql.ResultSet getResultSet()
        Return the underlying ResultSet (usually a javax.sql.rowset.CachedRowSet).
        See Also:
        CachedRowSet
      • getMetaData

        public final SqlRowSetMetaData getMetaData()
        Description copied from interface: SqlRowSet
        Retrieve the meta-data, i.e. number, types and properties for the columns of this row set.
        Specified by:
        getMetaData in interface SqlRowSet
        Returns:
        a corresponding SqlRowSetMetaData instance
        See Also:
        ResultSetMetaData.getCatalogName(int)
      • getBigDecimal

        public java.math.BigDecimal getBigDecimal(int columnIndex)
                                           throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a BigDecimal object.
        Specified by:
        getBigDecimal in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        Returns:
        an BigDecimal object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getBigDecimal(int)
      • getBigDecimal

        public java.math.BigDecimal getBigDecimal(java.lang.String columnLabel)
                                           throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a BigDecimal object.
        Specified by:
        getBigDecimal in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        an BigDecimal object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getBigDecimal(String)
      • getBoolean

        public boolean getBoolean(java.lang.String columnLabel)
                           throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a boolean.
        Specified by:
        getBoolean in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        a boolean representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getBoolean(String)
      • getDate

        public java.sql.Date getDate(int columnIndex)
                              throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Date object.
        Specified by:
        getDate in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        Returns:
        a Date object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getDate(int)
      • getDate

        public java.sql.Date getDate(java.lang.String columnLabel)
                              throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Date object.
        Specified by:
        getDate in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        a Date object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getDate(String)
      • getDate

        public java.sql.Date getDate(int columnIndex,
                                     java.util.Calendar cal)
                              throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Date object.
        Specified by:
        getDate in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        cal - the Calendar to use in constructing the Date
        Returns:
        a Date object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getDate(int, Calendar)
      • getDate

        public java.sql.Date getDate(java.lang.String columnLabel,
                                     java.util.Calendar cal)
                              throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Date object.
        Specified by:
        getDate in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        cal - the Calendar to use in constructing the Date
        Returns:
        a Date object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getDate(String, Calendar)
      • getDouble

        public double getDouble(java.lang.String columnLabel)
                         throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Double object.
        Specified by:
        getDouble in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        a Double object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getDouble(String)
      • getNString

        public java.lang.String getNString(int columnIndex)
                                    throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).
        Specified by:
        getNString in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        Returns:
        a String representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getNString(int)
      • getNString

        public java.lang.String getNString(java.lang.String columnLabel)
                                    throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a String (for NCHAR, NVARCHAR, LONGNVARCHAR columns).
        Specified by:
        getNString in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        a String representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getNString(String)
      • getObject

        public java.lang.Object getObject(java.lang.String columnLabel)
                                   throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as an Object.
        Specified by:
        getObject in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        a Object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getObject(String)
      • getObject

        public java.lang.Object getObject(int columnIndex,
                                          java.util.Map<java.lang.String,java.lang.Class<?>> map)
                                   throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as an Object.
        Specified by:
        getObject in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        map - a Map object containing the mapping from SQL types to Java types
        Returns:
        a Object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getObject(int, Map)
      • getObject

        public java.lang.Object getObject(java.lang.String columnLabel,
                                          java.util.Map<java.lang.String,java.lang.Class<?>> map)
                                   throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as an Object.
        Specified by:
        getObject in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        map - a Map object containing the mapping from SQL types to Java types
        Returns:
        a Object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getObject(String, Map)
      • getObject

        public <T> T getObject(int columnIndex,
                               java.lang.Class<T> type)
                        throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as an Object.
        Specified by:
        getObject in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        type - the Java type to convert the designated column to
        Returns:
        a Object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getObject(int, Class)
      • getObject

        public <T> T getObject(java.lang.String columnLabel,
                               java.lang.Class<T> type)
                        throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as an Object.
        Specified by:
        getObject in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        type - the Java type to convert the designated column to
        Returns:
        a Object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getObject(String, Class)
      • getString

        public java.lang.String getString(java.lang.String columnLabel)
                                   throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a String.
        Specified by:
        getString in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        a String representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getString(String)
      • getTime

        public java.sql.Time getTime(int columnIndex)
                              throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Time object.
        Specified by:
        getTime in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        Returns:
        a Time object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getTime(int)
      • getTime

        public java.sql.Time getTime(java.lang.String columnLabel)
                              throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Time object.
        Specified by:
        getTime in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        a Time object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getTime(String)
      • getTime

        public java.sql.Time getTime(int columnIndex,
                                     java.util.Calendar cal)
                              throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Time object.
        Specified by:
        getTime in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        cal - the Calendar to use in constructing the Date
        Returns:
        a Time object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getTime(int, Calendar)
      • getTime

        public java.sql.Time getTime(java.lang.String columnLabel,
                                     java.util.Calendar cal)
                              throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Time object.
        Specified by:
        getTime in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        cal - the Calendar to use in constructing the Date
        Returns:
        a Time object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getTime(String, Calendar)
      • getTimestamp

        public java.sql.Timestamp getTimestamp(int columnIndex)
                                        throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Timestamp object.
        Specified by:
        getTimestamp in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        Returns:
        a Timestamp object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getTimestamp(int)
      • getTimestamp

        public java.sql.Timestamp getTimestamp(java.lang.String columnLabel)
                                        throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Timestamp object.
        Specified by:
        getTimestamp in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        Returns:
        a Timestamp object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getTimestamp(String)
      • getTimestamp

        public java.sql.Timestamp getTimestamp(int columnIndex,
                                               java.util.Calendar cal)
                                        throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Timestamp object.
        Specified by:
        getTimestamp in interface SqlRowSet
        Parameters:
        columnIndex - the column index
        cal - the Calendar to use in constructing the Date
        Returns:
        a Timestamp object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getTimestamp(int, Calendar)
      • getTimestamp

        public java.sql.Timestamp getTimestamp(java.lang.String columnLabel,
                                               java.util.Calendar cal)
                                        throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Retrieve the value of the indicated column in the current row as a Timestamp object.
        Specified by:
        getTimestamp in interface SqlRowSet
        Parameters:
        columnLabel - the column label
        cal - the Calendar to use in constructing the Date
        Returns:
        a Timestamp object representing the column value
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.getTimestamp(String, Calendar)
      • absolute

        public boolean absolute(int row)
                         throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Move the cursor to the given row number in the row set, just after the last row.
        Specified by:
        absolute in interface SqlRowSet
        Parameters:
        row - the number of the row where the cursor should move
        Returns:
        true if the cursor is on the row set, false otherwise
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.absolute(int)
      • wasNull

        public boolean wasNull()
                        throws InvalidResultSetAccessException
        Description copied from interface: SqlRowSet
        Report whether the last column read had a value of SQL NULL.

        Note that you must first call one of the getter methods and then call the wasNull() method.

        Specified by:
        wasNull in interface SqlRowSet
        Returns:
        true if the most recent column retrieved was SQL NULL, false otherwise
        Throws:
        InvalidResultSetAccessException
        See Also:
        ResultSet.wasNull()