public class BeanProcessor extends Object
BeanProcessor
matches column names to bean property names
and converts ResultSet
columns into objects for those bean
properties. Subclasses should override the methods in the processing chain
to customize behavior.
This class is thread-safe.
BasicRowProcessor
Modifier and Type | Field and Description |
---|---|
protected static int |
PROPERTY_NOT_FOUND
Special array value used by
mapColumnsToProperties that
indicates there is no bean property that matches a column from a
ResultSet . |
Constructor and Description |
---|
BeanProcessor()
Constructor for BeanProcessor.
|
BeanProcessor(Map<String,String> columnToPropertyOverrides)
Constructor for BeanProcessor configured with column to property name overrides.
|
Modifier and Type | Method and Description |
---|---|
protected Method |
getWriteMethod(Object target,
PropertyDescriptor prop,
Object value)
Get the write method to use when setting
value to the target . |
protected int[] |
mapColumnsToProperties(ResultSetMetaData rsmd,
PropertyDescriptor[] props)
The positions in the returned array represent column numbers.
|
protected <T> T |
newInstance(Class<T> c)
Factory method that returns a new instance of the given Class.
|
<T> T |
populateBean(ResultSet resultSet,
T bean)
Initializes the fields of the provided bean from the ResultSet.
|
protected Object |
processColumn(ResultSet resultSet,
int index,
Class<?> propType)
Convert a
ResultSet column into an object. |
<T> T |
toBean(ResultSet rs,
Class<? extends T> type)
Convert a
ResultSet row into a JavaBean. |
<T> List<T> |
toBeanList(ResultSet resultSet,
Class<? extends T> type)
Convert a
ResultSet into a List of JavaBeans. |
protected static final int PROPERTY_NOT_FOUND
mapColumnsToProperties
that
indicates there is no bean property that matches a column from a
ResultSet
.public BeanProcessor()
public BeanProcessor(Map<String,String> columnToPropertyOverrides)
columnToPropertyOverrides
- ResultSet column to bean property name overridesprotected Method getWriteMethod(Object target, PropertyDescriptor prop, Object value)
value
to the target
.target
- Object where the write method will be called.prop
- BeanUtils information.value
- The value that will be passed to the write method.Method
to call on target
to write value
or null
if
there is no suitable write method.protected int[] mapColumnsToProperties(ResultSetMetaData rsmd, PropertyDescriptor[] props) throws SQLException
PropertyDescriptor[]
for the bean property that matches
the column name. If no bean property was found for a column, the
position is set to PROPERTY_NOT_FOUND
.rsmd
- The ResultSetMetaData
containing column
information.props
- The bean property descriptors.SQLException
- if a database access error occursprotected <T> T newInstance(Class<T> c) throws SQLException
T
- The type of object to createc
- The Class to create an object from.SQLException
- if creation failed.public <T> T populateBean(ResultSet resultSet, T bean) throws SQLException
T
- The type of beanresultSet
- The result set.bean
- The bean to be populated.SQLException
- if a database error occurs.protected Object processColumn(ResultSet resultSet, int index, Class<?> propType) throws SQLException
ResultSet
column into an object. Simple
implementations could just call rs.getObject(index)
while
more complex implementations could perform type manipulation to match
the column's type to the bean property type.
This implementation calls the appropriate ResultSet
getter
method for the given property type to perform the type conversion. If
the property type doesn't match one of the supported
ResultSet
types, getObject
is called.
resultSet
- The ResultSet
currently being processed. It is
positioned on a valid row before being passed into this method.index
- The current column index being processed.propType
- The bean property type that this column needs to be
converted into.ResultSet
at the given column
index after optional type processing or null
if the column
value was SQL NULL.SQLException
- if a database access error occurspublic <T> T toBean(ResultSet rs, Class<? extends T> type) throws SQLException
ResultSet
row into a JavaBean. This
implementation uses reflection and BeanInfo
classes to
match column names to bean property names. Properties are matched to
columns based on several factors:
<br/>
<ol>
<li>
The class has a writable property with the same name as a column.
The name comparison is case insensitive.
</li>
<li>
The column type can be converted to the property's set method
parameter type with a ResultSet.get* method. If the conversion fails
(ie. the property was an int and the column was a Timestamp) an
SQLException is thrown.
</li>
</ol>
<p>
Primitive bean properties are set to their defaults when SQL NULL is
returned from the ResultSet
. Numeric fields are set to 0
and booleans are set to false. Object bean properties are set to
null
when SQL NULL is returned. This is the same behavior
as the ResultSet
get* methods.
</p>T
- The type of bean to creaters
- ResultSet that supplies the bean datatype
- Class from which to create the bean instanceSQLException
- if a database access error occurspublic <T> List<T> toBeanList(ResultSet resultSet, Class<? extends T> type) throws SQLException
ResultSet
into a List
of JavaBeans.
This implementation uses reflection and BeanInfo
classes to
match column names to bean property names. Properties are matched to
columns based on several factors:
<br/>
<ol>
<li>
The class has a writable property with the same name as a column.
The name comparison is case insensitive.
</li>
<li>
The column type can be converted to the property's set method
parameter type with a ResultSet.get* method. If the conversion fails
(ie. the property was an int and the column was a Timestamp) an
SQLException is thrown.
</li>
</ol>
Primitive bean properties are set to their defaults when SQL NULL is
returned from the ResultSet
. Numeric fields are set to 0
and booleans are set to false. Object bean properties are set to
null
when SQL NULL is returned. This is the same behavior
as the ResultSet
get* methods.
</p>
T
- The type of bean to createresultSet
- ResultSet that supplies the bean datatype
- Class from which to create the bean instanceSQLException
- if a database access error occursCopyright © 2002–2023 The Apache Software Foundation. All rights reserved.