Class BeanPropertyRowMapper<T>
- Type Parameters:
T- the result type
- Direct Known Subclasses:
DataClassRowMapper
Function implementation that converts an R2DBC Readable
(a Row or OutParameters) into a new instance of the specified mapped
target class. The mapped target class must be a top-level class or static
nested class, and it must have a default or no-arg constructor.
Readable component values are mapped based on matching the column
name (as obtained from R2DBC meta-data) to public setters in the target class
for the corresponding properties. The names are matched either directly or by
transforming a name separating the parts with underscores to the same name using
"camel" case.
Mapping is provided for properties in the target class for many common types —
for example: String, boolean, Boolean, byte, Byte, short, Short, int, Integer,
long, Long, float, Float, double, Double, BigDecimal, java.util.Date, etc.
To facilitate mapping between columns and properties that don't have matching
names, try using column aliases in the SQL statement like
"select fname as first_name from customer", where first_name
can be mapped to a setFirstName(String) method in the target class.
If you need to map to a target class which has a data class constructor
— for example, a Java record or a Kotlin data class —
use DataClassRowMapper instead.
Please note that this class is designed to provide convenience rather than high performance. For best performance, consider using a custom mapping function implementation.
- Since:
- 6.1
- Author:
- Simon Baslé, Juergen Hoeller, Sam Brannen
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionBeanPropertyRowMapper(Class<T> mappedClass) Create a newBeanPropertyRowMapper.BeanPropertyRowMapper(Class<T> mappedClass, ConversionService conversionService) Create a newBeanPropertyRowMapper. -
Method Summary
Modifier and TypeMethodDescriptionExtract the values for the currentReadable: all columns in case of aRowor all parameters in case of anOutParameters.protected TconstructMappedInstance(Readable readable, List<? extends ReadableMetadata> itemMetadatas, TypeConverter tc) Construct an instance of the mapped class for the currentReadable.protected ObjectgetItemValue(Readable readable, int itemIndex, Class<?> paramType) Retrieve an R2DBC object value for the specified item index (a column or an out-parameter).protected StringlowerCaseName(String name) Convert the given name to lower case.protected voidsuppressProperty(String propertyName) Remove the specified property from the mapped properties.protected StringunderscoreName(String name) Convert a name in camelCase to an underscored name in lower case.
-
Constructor Details
-
BeanPropertyRowMapper
Create a newBeanPropertyRowMapper.- Parameters:
mappedClass- the class that each row should be mapped to
-
BeanPropertyRowMapper
Create a newBeanPropertyRowMapper.- Parameters:
mappedClass- the class that each row should be mapped toconversionService- aConversionServicefor binding result values to bean properties
-
-
Method Details
-
suppressProperty
Remove the specified property from the mapped properties.- Parameters:
propertyName- the property name (as used by property descriptors)
-
lowerCaseName
Convert the given name to lower case.By default, conversions will happen within the US locale.
- Parameters:
name- the original name- Returns:
- the converted name
-
underscoreName
Convert a name in camelCase to an underscored name in lower case.Any upper case letters are converted to lower case with a preceding underscore.
- Parameters:
name- the original name- Returns:
- the converted name
- See Also:
-
apply
Extract the values for the currentReadable: all columns in case of aRowor all parameters in case of anOutParameters.Utilizes public setters and derives meta-data from the concrete type.
- Specified by:
applyin interfaceFunction<Readable,T> - Throws:
IllegalArgumentException- in case the concrete type is neitherRownorOutParameters- See Also:
-
constructMappedInstance
protected T constructMappedInstance(Readable readable, List<? extends ReadableMetadata> itemMetadatas, TypeConverter tc) Construct an instance of the mapped class for the currentReadable.The default implementation simply instantiates the mapped class. Can be overridden in subclasses.
- Parameters:
readable- theReadablebeing mapped (aRoworOutParameters)itemMetadatas- the list of itemReadableMetadata(eitherColumnMetadataorOutParameterMetadata)tc- a TypeConverter with this row mapper's conversion service- Returns:
- a corresponding instance of the mapped class
-
getItemValue
Retrieve an R2DBC object value for the specified item index (a column or an out-parameter).The default implementation calls
Readable.get(int, Class)then falls back toReadable.get(int)in case of an exception. Subclasses may override this to check specific value types upfront, or to post-process values returned fromget.- Parameters:
readable- is theRoworOutParametersholding the dataitemIndex- is the column index or out-parameter indexparamType- the target parameter type- Returns:
- the Object value
- See Also:
-