Class SqlNullCheckedResultSet
- java.lang.Object
-
- org.apache.commons.dbutils.wrappers.SqlNullCheckedResultSet
-
- All Implemented Interfaces:
java.lang.reflect.InvocationHandler
public class SqlNullCheckedResultSet extends java.lang.Object implements java.lang.reflect.InvocationHandler
Decorates aResultSet
with checks for a SQL NULL value on eachgetXXX
method. If a column value obtained by agetXXX
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 Javanull
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();
Unlike some other classes in DbUtils, this class is NOT thread-safe.
-
-
Field Summary
Fields Modifier and Type Field Description private static ProxyFactory
factory
The factory to create proxies with.private static java.lang.String
GET_NULL_PREFIX
ThegetNull
string prefix.private java.io.InputStream
nullAsciiStream
private java.math.BigDecimal
nullBigDecimal
private java.io.InputStream
nullBinaryStream
private java.sql.Blob
nullBlob
private boolean
nullBoolean
private byte
nullByte
private byte[]
nullBytes
private java.io.Reader
nullCharacterStream
private java.sql.Clob
nullClob
private java.sql.Date
nullDate
private double
nullDouble
private float
nullFloat
private int
nullInt
private long
nullLong
private static java.util.Map<java.lang.String,java.lang.reflect.Method>
nullMethods
Maps normal method names (ie.private java.lang.Object
nullObject
private java.sql.Ref
nullRef
private short
nullShort
private java.lang.String
nullString
private java.sql.Time
nullTime
private java.sql.Timestamp
nullTimestamp
private java.net.URL
nullURL
private java.sql.ResultSet
rs
The wrapped result.
-
Constructor Summary
Constructors Constructor Description SqlNullCheckedResultSet(java.sql.ResultSet rs)
Constructs a new instance ofSqlNullCheckedResultSet
to wrap the specifiedResultSet
.
-
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 agetAsciiStream
method.java.math.BigDecimal
getNullBigDecimal()
Returns the value when a SQL null is encountered as the result of invoking agetBigDecimal
method.java.io.InputStream
getNullBinaryStream()
Returns the value when a SQL null is encountered as the result of invoking agetBinaryStream
method.java.sql.Blob
getNullBlob()
Returns the value when a SQL null is encountered as the result of invoking agetBlob
method.boolean
getNullBoolean()
Returns the value when a SQL null is encountered as the result of invoking agetBoolean
method.byte
getNullByte()
Returns the value when a SQL null is encountered as the result of invoking agetByte
method.byte[]
getNullBytes()
Returns the value when a SQL null is encountered as the result of invoking agetBytes
method.java.io.Reader
getNullCharacterStream()
Returns the value when a SQL null is encountered as the result of invoking agetCharacterStream
method.java.sql.Clob
getNullClob()
Returns the value when a SQL null is encountered as the result of invoking agetClob
method.java.sql.Date
getNullDate()
Returns the value when a SQL null is encountered as the result of invoking agetDate
method.double
getNullDouble()
Returns the value when a SQL null is encountered as the result of invoking agetDouble
method.float
getNullFloat()
Returns the value when a SQL null is encountered as the result of invoking agetFloat
method.int
getNullInt()
Returns the value when a SQL null is encountered as the result of invoking agetInt
method.long
getNullLong()
Returns the value when a SQL null is encountered as the result of invoking agetLong
method.java.lang.Object
getNullObject()
Returns the value when a SQL null is encountered as the result of invoking agetObject
method.java.sql.Ref
getNullRef()
Returns the value when a SQL null is encountered as the result of invoking agetRef
method.short
getNullShort()
Returns the value when a SQL null is encountered as the result of invoking agetShort
method.java.lang.String
getNullString()
Returns the value when a SQL null is encountered as the result of invoking agetString
method.java.sql.Time
getNullTime()
Returns the value when a SQL null is encountered as the result of invoking agetTime
method.java.sql.Timestamp
getNullTimestamp()
Returns the value when a SQL null is encountered as the result of invoking agetTimestamp
method.java.net.URL
getNullURL()
Returns the value when a SQL null is encountered as the result of invoking agetURL
method.java.lang.Object
invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
Intercepts calls toget*
methods and calls the appropriategetNull*
method if theResultSet
returnednull
.void
setNullAsciiStream(java.io.InputStream nullAsciiStream)
Sets the value to return when a SQL null is encountered as the result of invoking agetAsciiStream
method.void
setNullBigDecimal(java.math.BigDecimal nullBigDecimal)
Sets the value to return when a SQL null is encountered as the result of invoking agetBigDecimal
method.void
setNullBinaryStream(java.io.InputStream nullBinaryStream)
Sets the value to return when a SQL null is encountered as the result of invoking agetBinaryStream
method.void
setNullBlob(java.sql.Blob nullBlob)
Sets the value to return when a SQL null is encountered as the result of invoking agetBlob
method.void
setNullBoolean(boolean nullBoolean)
Sets the value to return when a SQL null is encountered as the result of invoking agetBoolean
method.void
setNullByte(byte nullByte)
Sets the value to return when a SQL null is encountered as the result of invoking agetByte
method.void
setNullBytes(byte[] nullBytes)
Sets the value to return when a SQL null is encountered as the result of invoking agetBytes
method.void
setNullCharacterStream(java.io.Reader nullCharacterStream)
Sets the value to return when a SQL null is encountered as the result of invoking agetCharacterStream
method.void
setNullClob(java.sql.Clob nullClob)
Sets the value to return when a SQL null is encountered as the result of invoking agetClob
method.void
setNullDate(java.sql.Date nullDate)
Sets the value to return when a SQL null is encountered as the result of invoking agetDate
method.void
setNullDouble(double nullDouble)
Sets the value to return when a SQL null is encountered as the result of invoking agetDouble
method.void
setNullFloat(float nullFloat)
Sets the value to return when a SQL null is encountered as the result of invoking agetFloat
method.void
setNullInt(int nullInt)
Sets the value to return when a SQL null is encountered as the result of invoking agetInt
method.void
setNullLong(long nullLong)
Sets the value to return when a SQL null is encountered as the result of invoking agetLong
method.void
setNullObject(java.lang.Object nullObject)
Sets the value to return when a SQL null is encountered as the result of invoking agetObject
method.void
setNullRef(java.sql.Ref nullRef)
Sets the value to return when a SQL null is encountered as the result of invoking agetRef
method.void
setNullShort(short nullShort)
Sets the value to return when a SQL null is encountered as the result of invoking agetShort
method.void
setNullString(java.lang.String nullString)
Sets the value to return when a SQL null is encountered as the result of invoking agetString
method.void
setNullTime(java.sql.Time nullTime)
Sets the value to return when a SQL null is encountered as the result of invoking agetTime
method.void
setNullTimestamp(java.sql.Timestamp nullTimestamp)
Sets the value to return when a SQL null is encountered as the result of invoking agetTimestamp
method.void
setNullURL(java.net.URL nullURL)
Sets the value to return when a SQL null is encountered as the result of invoking agetURL
method.static java.sql.ResultSet
wrap(java.sql.ResultSet rs)
Wraps theResultSet
in an instance of this class.
-
-
-
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
ThegetNull
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.
-
-
Method Detail
-
wrap
public static java.sql.ResultSet wrap(java.sql.ResultSet rs)
Wraps theResultSet
in an instance of this class. This is equivalent to:ProxyFactory.instance().createResultSet(new SqlNullCheckedResultSet(rs));
- Parameters:
rs
- TheResultSet
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 agetAsciiStream
method.- Returns:
- the value
-
getNullBigDecimal
public java.math.BigDecimal getNullBigDecimal()
Returns the value when a SQL null is encountered as the result of invoking agetBigDecimal
method.- Returns:
- the value
-
getNullBinaryStream
public java.io.InputStream getNullBinaryStream()
Returns the value when a SQL null is encountered as the result of invoking agetBinaryStream
method.- Returns:
- the value
-
getNullBlob
public java.sql.Blob getNullBlob()
Returns the value when a SQL null is encountered as the result of invoking agetBlob
method.- Returns:
- the value
-
getNullBoolean
public boolean getNullBoolean()
Returns the value when a SQL null is encountered as the result of invoking agetBoolean
method.- Returns:
- the value
-
getNullByte
public byte getNullByte()
Returns the value when a SQL null is encountered as the result of invoking agetByte
method.- Returns:
- the value
-
getNullBytes
public byte[] getNullBytes()
Returns the value when a SQL null is encountered as the result of invoking agetBytes
method.- Returns:
- the value
-
getNullCharacterStream
public java.io.Reader getNullCharacterStream()
Returns the value when a SQL null is encountered as the result of invoking agetCharacterStream
method.- Returns:
- the value
-
getNullClob
public java.sql.Clob getNullClob()
Returns the value when a SQL null is encountered as the result of invoking agetClob
method.- Returns:
- the value
-
getNullDate
public java.sql.Date getNullDate()
Returns the value when a SQL null is encountered as the result of invoking agetDate
method.- Returns:
- the value
-
getNullDouble
public double getNullDouble()
Returns the value when a SQL null is encountered as the result of invoking agetDouble
method.- Returns:
- the value
-
getNullFloat
public float getNullFloat()
Returns the value when a SQL null is encountered as the result of invoking agetFloat
method.- Returns:
- the value
-
getNullInt
public int getNullInt()
Returns the value when a SQL null is encountered as the result of invoking agetInt
method.- Returns:
- the value
-
getNullLong
public long getNullLong()
Returns the value when a SQL null is encountered as the result of invoking agetLong
method.- Returns:
- the value
-
getNullObject
public java.lang.Object getNullObject()
Returns the value when a SQL null is encountered as the result of invoking agetObject
method.- Returns:
- the value
-
getNullRef
public java.sql.Ref getNullRef()
Returns the value when a SQL null is encountered as the result of invoking agetRef
method.- Returns:
- the value
-
getNullShort
public short getNullShort()
Returns the value when a SQL null is encountered as the result of invoking agetShort
method.- Returns:
- the value
-
getNullString
public java.lang.String getNullString()
Returns the value when a SQL null is encountered as the result of invoking agetString
method.- Returns:
- the value
-
getNullTime
public java.sql.Time getNullTime()
Returns the value when a SQL null is encountered as the result of invoking agetTime
method.- Returns:
- the value
-
getNullTimestamp
public java.sql.Timestamp getNullTimestamp()
Returns the value when a SQL null is encountered as the result of invoking agetTimestamp
method.- Returns:
- the value
-
getNullURL
public java.net.URL getNullURL()
Returns the value when a SQL null is encountered as the result of invoking agetURL
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 toget*
methods and calls the appropriategetNull*
method if theResultSet
returnednull
.- Specified by:
invoke
in interfacejava.lang.reflect.InvocationHandler
- Parameters:
proxy
- Not used; all method calls go to the internal result setmethod
- The method to invoke on the result setargs
- 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 agetAsciiStream
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 agetBigDecimal
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 agetBinaryStream
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 agetBlob
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 agetBoolean
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 agetByte
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 agetBytes
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 agetCharacterStream
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 agetClob
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 agetDate
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 agetDouble
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 agetFloat
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 agetInt
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 agetLong
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 agetObject
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 agetRef
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 agetShort
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 agetString
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 agetTime
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 agetTimestamp
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 agetURL
method.- Parameters:
nullURL
- the value
-
-