Class SqlNullCheckedResultSet

  • All Implemented Interfaces:
    java.lang.reflect.InvocationHandler

    public class SqlNullCheckedResultSet
    extends java.lang.Object
    implements java.lang.reflect.InvocationHandler
    Decorates a ResultSet with checks for a SQL NULL value on each getXXX method. If a column value obtained by a getXXX method is not SQL NULL, the column value is returned. If the column value is SQL null, an alternate value is returned. The alternate value defaults to the Java null value, which can be overridden for instances of the class.

    Usage example:

     Connection conn = // somehow get a connection
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT col1, col2 FROM table1");
    
     // Wrap the result set for SQL NULL checking
     SqlNullCheckedResultSet wrapper = new SqlNullCheckedResultSet(rs);
     wrapper.setNullString("---N/A---"); // Set null string
     wrapper.setNullInt(-999); // Set null integer
     rs = ProxyFactory.instance().createResultSet(wrapper);
    
     while (rs.next()) {
         // If col1 is SQL NULL, value returned will be "---N/A---"
         String col1 = rs.getString("col1");
         // If col2 is SQL NULL, value returned will be -999
         int col2 = rs.getInt("col2");
     }
     rs.close();
     
    </p>

    Unlike some other classes in DbUtils, this class is NOT thread-safe.

    • Constructor Summary

      Constructors 
      Constructor Description
      SqlNullCheckedResultSet​(java.sql.ResultSet rs)
      Constructs a new instance of SqlNullCheckedResultSet to wrap the specified ResultSet.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.io.InputStream getNullAsciiStream()
      Returns the value when a SQL null is encountered as the result of invoking a getAsciiStream method.
      java.math.BigDecimal getNullBigDecimal()
      Returns the value when a SQL null is encountered as the result of invoking a getBigDecimal method.
      java.io.InputStream getNullBinaryStream()
      Returns the value when a SQL null is encountered as the result of invoking a getBinaryStream method.
      java.sql.Blob getNullBlob()
      Returns the value when a SQL null is encountered as the result of invoking a getBlob method.
      boolean getNullBoolean()
      Returns the value when a SQL null is encountered as the result of invoking a getBoolean method.
      byte getNullByte()
      Returns the value when a SQL null is encountered as the result of invoking a getByte method.
      byte[] getNullBytes()
      Returns the value when a SQL null is encountered as the result of invoking a getBytes method.
      java.io.Reader getNullCharacterStream()
      Returns the value when a SQL null is encountered as the result of invoking a getCharacterStream method.
      java.sql.Clob getNullClob()
      Returns the value when a SQL null is encountered as the result of invoking a getClob method.
      java.sql.Date getNullDate()
      Returns the value when a SQL null is encountered as the result of invoking a getDate method.
      double getNullDouble()
      Returns the value when a SQL null is encountered as the result of invoking a getDouble method.
      float getNullFloat()
      Returns the value when a SQL null is encountered as the result of invoking a getFloat method.
      int getNullInt()
      Returns the value when a SQL null is encountered as the result of invoking a getInt method.
      long getNullLong()
      Returns the value when a SQL null is encountered as the result of invoking a getLong method.
      java.lang.Object getNullObject()
      Returns the value when a SQL null is encountered as the result of invoking a getObject method.
      java.sql.Ref getNullRef()
      Returns the value when a SQL null is encountered as the result of invoking a getRef method.
      short getNullShort()
      Returns the value when a SQL null is encountered as the result of invoking a getShort method.
      java.lang.String getNullString()
      Returns the value when a SQL null is encountered as the result of invoking a getString method.
      java.sql.Time getNullTime()
      Returns the value when a SQL null is encountered as the result of invoking a getTime method.
      java.sql.Timestamp getNullTimestamp()
      Returns the value when a SQL null is encountered as the result of invoking a getTimestamp method.
      java.net.URL getNullURL()
      Returns the value when a SQL null is encountered as the result of invoking a getURL method.
      java.lang.Object invoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
      Intercepts calls to get* methods and calls the appropriate getNull* method if the ResultSet returned null.
      void setNullAsciiStream​(java.io.InputStream nullAsciiStream)
      Sets the value to return when a SQL null is encountered as the result of invoking a getAsciiStream method.
      void setNullBigDecimal​(java.math.BigDecimal nullBigDecimal)
      Sets the value to return when a SQL null is encountered as the result of invoking a getBigDecimal method.
      void setNullBinaryStream​(java.io.InputStream nullBinaryStream)
      Sets the value to return when a SQL null is encountered as the result of invoking a getBinaryStream method.
      void setNullBlob​(java.sql.Blob nullBlob)
      Sets the value to return when a SQL null is encountered as the result of invoking a getBlob method.
      void setNullBoolean​(boolean nullBoolean)
      Sets the value to return when a SQL null is encountered as the result of invoking a getBoolean method.
      void setNullByte​(byte nullByte)
      Sets the value to return when a SQL null is encountered as the result of invoking a getByte method.
      void setNullBytes​(byte[] nullBytes)
      Sets the value to return when a SQL null is encountered as the result of invoking a getBytes method.
      void setNullCharacterStream​(java.io.Reader nullCharacterStream)
      Sets the value to return when a SQL null is encountered as the result of invoking a getCharacterStream method.
      void setNullClob​(java.sql.Clob nullClob)
      Sets the value to return when a SQL null is encountered as the result of invoking a getClob method.
      void setNullDate​(java.sql.Date nullDate)
      Sets the value to return when a SQL null is encountered as the result of invoking a getDate method.
      void setNullDouble​(double nullDouble)
      Sets the value to return when a SQL null is encountered as the result of invoking a getDouble method.
      void setNullFloat​(float nullFloat)
      Sets the value to return when a SQL null is encountered as the result of invoking a getFloat method.
      void setNullInt​(int nullInt)
      Sets the value to return when a SQL null is encountered as the result of invoking a getInt method.
      void setNullLong​(long nullLong)
      Sets the value to return when a SQL null is encountered as the result of invoking a getLong method.
      void setNullObject​(java.lang.Object nullObject)
      Sets the value to return when a SQL null is encountered as the result of invoking a getObject method.
      void setNullRef​(java.sql.Ref nullRef)
      Sets the value to return when a SQL null is encountered as the result of invoking a getRef method.
      void setNullShort​(short nullShort)
      Sets the value to return when a SQL null is encountered as the result of invoking a getShort method.
      void setNullString​(java.lang.String nullString)
      Sets the value to return when a SQL null is encountered as the result of invoking a getString method.
      void setNullTime​(java.sql.Time nullTime)
      Sets the value to return when a SQL null is encountered as the result of invoking a getTime method.
      void setNullTimestamp​(java.sql.Timestamp nullTimestamp)
      Sets the value to return when a SQL null is encountered as the result of invoking a getTimestamp method.
      void setNullURL​(java.net.URL nullURL)
      Sets the value to return when a SQL null is encountered as the result of invoking a getURL method.
      static java.sql.ResultSet wrap​(java.sql.ResultSet rs)
      Wraps the ResultSet in an instance of this class.
      • Methods inherited from class java.lang.Object

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

      • nullMethods

        private static final java.util.Map<java.lang.String,​java.lang.reflect.Method> nullMethods
        Maps normal method names (ie. "getBigDecimal") to the corresponding null Method object (ie. getNullBigDecimal).
      • GET_NULL_PREFIX

        private static final java.lang.String GET_NULL_PREFIX
        The getNull string prefix.
        Since:
        1.4
        See Also:
        Constant Field Values
      • factory

        private static final ProxyFactory factory
        The factory to create proxies with.
      • nullAsciiStream

        private java.io.InputStream nullAsciiStream
      • nullBigDecimal

        private java.math.BigDecimal nullBigDecimal
      • nullBinaryStream

        private java.io.InputStream nullBinaryStream
      • nullBlob

        private java.sql.Blob nullBlob
      • nullBoolean

        private boolean nullBoolean
      • nullByte

        private byte nullByte
      • nullBytes

        private byte[] nullBytes
      • nullCharacterStream

        private java.io.Reader nullCharacterStream
      • nullClob

        private java.sql.Clob nullClob
      • nullDate

        private java.sql.Date nullDate
      • nullDouble

        private double nullDouble
      • nullFloat

        private float nullFloat
      • nullInt

        private int nullInt
      • nullLong

        private long nullLong
      • nullObject

        private java.lang.Object nullObject
      • nullRef

        private java.sql.Ref nullRef
      • nullShort

        private short nullShort
      • nullString

        private java.lang.String nullString
      • nullTime

        private java.sql.Time nullTime
      • nullTimestamp

        private java.sql.Timestamp nullTimestamp
      • nullURL

        private java.net.URL nullURL
      • rs

        private final java.sql.ResultSet rs
        The wrapped result.
    • Constructor Detail

      • SqlNullCheckedResultSet

        public SqlNullCheckedResultSet​(java.sql.ResultSet rs)
        Constructs a new instance of SqlNullCheckedResultSet to wrap the specified ResultSet.
        Parameters:
        rs - ResultSet to wrap
    • Method Detail

      • wrap

        public static java.sql.ResultSet wrap​(java.sql.ResultSet rs)
        Wraps the ResultSet in an instance of this class. This is equivalent to:
         ProxyFactory.instance().createResultSet(new SqlNullCheckedResultSet(rs));
         
        Parameters:
        rs - The ResultSet to wrap.
        Returns:
        wrapped ResultSet
      • getNullAsciiStream

        public java.io.InputStream getNullAsciiStream()
        Returns the value when a SQL null is encountered as the result of invoking a getAsciiStream method.
        Returns:
        the value
      • getNullBigDecimal

        public java.math.BigDecimal getNullBigDecimal()
        Returns the value when a SQL null is encountered as the result of invoking a getBigDecimal method.
        Returns:
        the value
      • getNullBinaryStream

        public java.io.InputStream getNullBinaryStream()
        Returns the value when a SQL null is encountered as the result of invoking a getBinaryStream method.
        Returns:
        the value
      • getNullBlob

        public java.sql.Blob getNullBlob()
        Returns the value when a SQL null is encountered as the result of invoking a getBlob method.
        Returns:
        the value
      • getNullBoolean

        public boolean getNullBoolean()
        Returns the value when a SQL null is encountered as the result of invoking a getBoolean method.
        Returns:
        the value
      • getNullByte

        public byte getNullByte()
        Returns the value when a SQL null is encountered as the result of invoking a getByte method.
        Returns:
        the value
      • getNullBytes

        public byte[] getNullBytes()
        Returns the value when a SQL null is encountered as the result of invoking a getBytes method.
        Returns:
        the value
      • getNullCharacterStream

        public java.io.Reader getNullCharacterStream()
        Returns the value when a SQL null is encountered as the result of invoking a getCharacterStream method.
        Returns:
        the value
      • getNullClob

        public java.sql.Clob getNullClob()
        Returns the value when a SQL null is encountered as the result of invoking a getClob method.
        Returns:
        the value
      • getNullDate

        public java.sql.Date getNullDate()
        Returns the value when a SQL null is encountered as the result of invoking a getDate method.
        Returns:
        the value
      • getNullDouble

        public double getNullDouble()
        Returns the value when a SQL null is encountered as the result of invoking a getDouble method.
        Returns:
        the value
      • getNullFloat

        public float getNullFloat()
        Returns the value when a SQL null is encountered as the result of invoking a getFloat method.
        Returns:
        the value
      • getNullInt

        public int getNullInt()
        Returns the value when a SQL null is encountered as the result of invoking a getInt method.
        Returns:
        the value
      • getNullLong

        public long getNullLong()
        Returns the value when a SQL null is encountered as the result of invoking a getLong method.
        Returns:
        the value
      • getNullObject

        public java.lang.Object getNullObject()
        Returns the value when a SQL null is encountered as the result of invoking a getObject method.
        Returns:
        the value
      • getNullRef

        public java.sql.Ref getNullRef()
        Returns the value when a SQL null is encountered as the result of invoking a getRef method.
        Returns:
        the value
      • getNullShort

        public short getNullShort()
        Returns the value when a SQL null is encountered as the result of invoking a getShort method.
        Returns:
        the value
      • getNullString

        public java.lang.String getNullString()
        Returns the value when a SQL null is encountered as the result of invoking a getString method.
        Returns:
        the value
      • getNullTime

        public java.sql.Time getNullTime()
        Returns the value when a SQL null is encountered as the result of invoking a getTime method.
        Returns:
        the value
      • getNullTimestamp

        public java.sql.Timestamp getNullTimestamp()
        Returns the value when a SQL null is encountered as the result of invoking a getTimestamp method.
        Returns:
        the value
      • getNullURL

        public java.net.URL getNullURL()
        Returns the value when a SQL null is encountered as the result of invoking a getURL method.
        Returns:
        the value
      • invoke

        public java.lang.Object invoke​(java.lang.Object proxy,
                                       java.lang.reflect.Method method,
                                       java.lang.Object[] args)
                                throws java.lang.Throwable
        Intercepts calls to get* methods and calls the appropriate getNull* method if the ResultSet returned null.
        Specified by:
        invoke in interface java.lang.reflect.InvocationHandler
        Parameters:
        proxy - Not used; all method calls go to the internal result set
        method - The method to invoke on the result set
        args - The arguments to pass to the result set
        Returns:
        null checked result
        Throws:
        java.lang.Throwable - error
        See Also:
        InvocationHandler.invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
      • setNullAsciiStream

        public void setNullAsciiStream​(java.io.InputStream nullAsciiStream)
        Sets the value to return when a SQL null is encountered as the result of invoking a getAsciiStream method.
        Parameters:
        nullAsciiStream - the value
      • setNullBigDecimal

        public void setNullBigDecimal​(java.math.BigDecimal nullBigDecimal)
        Sets the value to return when a SQL null is encountered as the result of invoking a getBigDecimal method.
        Parameters:
        nullBigDecimal - the value
      • setNullBinaryStream

        public void setNullBinaryStream​(java.io.InputStream nullBinaryStream)
        Sets the value to return when a SQL null is encountered as the result of invoking a getBinaryStream method.
        Parameters:
        nullBinaryStream - the value
      • setNullBlob

        public void setNullBlob​(java.sql.Blob nullBlob)
        Sets the value to return when a SQL null is encountered as the result of invoking a getBlob method.
        Parameters:
        nullBlob - the value
      • setNullBoolean

        public void setNullBoolean​(boolean nullBoolean)
        Sets the value to return when a SQL null is encountered as the result of invoking a getBoolean method.
        Parameters:
        nullBoolean - the value
      • setNullByte

        public void setNullByte​(byte nullByte)
        Sets the value to return when a SQL null is encountered as the result of invoking a getByte method.
        Parameters:
        nullByte - the value
      • setNullBytes

        public void setNullBytes​(byte[] nullBytes)
        Sets the value to return when a SQL null is encountered as the result of invoking a getBytes method.
        Parameters:
        nullBytes - the value
      • setNullCharacterStream

        public void setNullCharacterStream​(java.io.Reader nullCharacterStream)
        Sets the value to return when a SQL null is encountered as the result of invoking a getCharacterStream method.
        Parameters:
        nullCharacterStream - the value
      • setNullClob

        public void setNullClob​(java.sql.Clob nullClob)
        Sets the value to return when a SQL null is encountered as the result of invoking a getClob method.
        Parameters:
        nullClob - the value
      • setNullDate

        public void setNullDate​(java.sql.Date nullDate)
        Sets the value to return when a SQL null is encountered as the result of invoking a getDate method.
        Parameters:
        nullDate - the value
      • setNullDouble

        public void setNullDouble​(double nullDouble)
        Sets the value to return when a SQL null is encountered as the result of invoking a getDouble method.
        Parameters:
        nullDouble - the value
      • setNullFloat

        public void setNullFloat​(float nullFloat)
        Sets the value to return when a SQL null is encountered as the result of invoking a getFloat method.
        Parameters:
        nullFloat - the value
      • setNullInt

        public void setNullInt​(int nullInt)
        Sets the value to return when a SQL null is encountered as the result of invoking a getInt method.
        Parameters:
        nullInt - the value
      • setNullLong

        public void setNullLong​(long nullLong)
        Sets the value to return when a SQL null is encountered as the result of invoking a getLong method.
        Parameters:
        nullLong - the value
      • setNullObject

        public void setNullObject​(java.lang.Object nullObject)
        Sets the value to return when a SQL null is encountered as the result of invoking a getObject method.
        Parameters:
        nullObject - the value
      • setNullRef

        public void setNullRef​(java.sql.Ref nullRef)
        Sets the value to return when a SQL null is encountered as the result of invoking a getRef method.
        Parameters:
        nullRef - the value
      • setNullShort

        public void setNullShort​(short nullShort)
        Sets the value to return when a SQL null is encountered as the result of invoking a getShort method.
        Parameters:
        nullShort - the value
      • setNullString

        public void setNullString​(java.lang.String nullString)
        Sets the value to return when a SQL null is encountered as the result of invoking a getString method.
        Parameters:
        nullString - the value
      • setNullTime

        public void setNullTime​(java.sql.Time nullTime)
        Sets the value to return when a SQL null is encountered as the result of invoking a getTime method.
        Parameters:
        nullTime - the value
      • setNullTimestamp

        public void setNullTimestamp​(java.sql.Timestamp nullTimestamp)
        Sets the value to return when a SQL null is encountered as the result of invoking a getTimestamp method.
        Parameters:
        nullTimestamp - the value
      • setNullURL

        public void setNullURL​(java.net.URL nullURL)
        Sets the value to return when a SQL null is encountered as the result of invoking a getURL method.
        Parameters:
        nullURL - the value