Class ColumnNameR2dbcResultReader
- All Implemented Interfaces:
ResultReader<io.r2dbc.spi.Row, String>
ResultReader for R2DBC.- Since:
- 1.0.0
- Author:
- graemerocher
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final io.micronaut.core.convert.ConversionService -
Constructor Summary
ConstructorsConstructorDescriptionColumnNameR2dbcResultReader(@Nullable DataConversionService conversionService) Constructs a new instance. -
Method Summary
Modifier and TypeMethodDescriptioncolumnResolutionKey(io.r2dbc.spi.Row resultSet) The object the resolved column ordinals belong to, compared by identity by callers that cache them.protected DataAccessExceptionexceptionForColumn(String name, Exception e) intfindColumnIndex(io.r2dbc.spi.Row resultSet, String columnName) Resolves the ordinal of the column with the given name in the result set, so that callers can cache it and read the values of subsequent rows by index usingResultReader.getColumnIndexReader()instead of resolving the column name for every row.ResultReader<io.r2dbc.spi.Row, Integer> The reader capable of reading values by the ordinals resolved byResultReader.findColumnIndex(Object, String).io.micronaut.core.convert.ConversionServiceGet conversion service.protected @Nullable ObjectgetRequiredRawValue(io.r2dbc.spi.Row row, String name) Reads the raw value of the column forResultReader.getRequiredValue(Row, I, Class), which the reader addressing a column by name retries with an upper case name.protected <T> @Nullable TgetRequiredTypedValue(io.r2dbc.spi.Row row, String name, Class<T> type) Reads the value of the column as the given type forResultReader.getRequiredValue(Row, I, Class), which the reader addressing a column by name retries with an upper case name.<T> @Nullable TgetRequiredValue(io.r2dbc.spi.Row resultSet, String name, Class<T> type) Get a value from the given result set for the given name and type.protected @Nullable ObjectReads the raw value of the column.protected <T> @Nullable TReads the value of the column as the given type.booleannext(io.r2dbc.spi.Row resultSet) Move the index to the next result if possible.@Nullable BigDecimalreadBigDecimal(io.r2dbc.spi.Row resultSet, String name) Read a BigDecimal value for the given name.booleanreadBoolean(io.r2dbc.spi.Row resultSet, String name) Read a boolean value for the given name.byteRead a byte value for the given name.byte @Nullable []Read a byte[] value for the given name.charRead a char value for the given name.@Nullable DateRead a date value for the given name.doublereadDouble(io.r2dbc.spi.Row resultSet, String name) Read a double value for the given name.@Nullable ObjectreadDynamic(@NonNull io.r2dbc.spi.Row resultSet, String index, @NonNull DataType dataType) Read a value dynamically using the result set and the given name and data type.floatRead a float value for the given name.intRead an int value for the given name.longRead a long value for the given name.shortRead a short value for the given name.@Nullable StringreadString(io.r2dbc.spi.Row resultSet, String name) Read a string value for the given name.@Nullable DatereadTimestamp(io.r2dbc.spi.Row resultSet, String index) Read a timestamp value for the given index.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ResultReader
convertRequired, convertRequired, getRequiredValueNonNull, readDuration, readPeriod, readTime, readUUID
-
Field Details
-
conversionService
protected final io.micronaut.core.convert.ConversionService conversionService
-
-
Constructor Details
-
ColumnNameR2dbcResultReader
public ColumnNameR2dbcResultReader() -
ColumnNameR2dbcResultReader
Constructs a new instance.- Parameters:
conversionService- The data conversion service- Since:
- 3.1
-
-
Method Details
-
getValue
-
getValue
-
getRequiredTypedValue
Reads the value of the column as the given type forResultReader.getRequiredValue(Row, I, Class), which the reader addressing a column by name retries with an upper case name.- Type Parameters:
T- The type- Parameters:
row- The rowname- The column identifiertype- The type- Returns:
- The value, can be null
-
getRequiredRawValue
Reads the raw value of the column forResultReader.getRequiredValue(Row, I, Class), which the reader addressing a column by name retries with an upper case name.- Parameters:
row- The rowname- The column identifier- Returns:
- The value, can be null
-
findColumnIndex
Resolves the ordinal of the column with the given name in the result set, so that callers can cache it and read the values of subsequent rows by index usingResultReader.getColumnIndexReader()instead of resolving the column name for every row.The returned ordinal is only valid for the given result set and uses the index convention of the underlying driver (for example 1-based for JDBC). Readers that cannot resolve column ordinals return
-1, in which case callers must keep reading by name.The ordinal is resolved from the row metadata, matching the column name the way the drivers do, ignoring case. A column that cannot be matched is reported as
-1so that the caller keeps reading it by name.- Parameters:
resultSet- The result setcolumnName- The column name- Returns:
- The column index or
-1if the column cannot be resolved
-
getColumnIndexReader
Description copied from interface:ResultReaderThe reader capable of reading values by the ordinals resolved byResultReader.findColumnIndex(Object, String).- Returns:
- The column index reader or
nullif reading by column index is not supported
-
columnResolutionKey
The object the resolved column ordinals belong to, compared by identity by callers that cache them. It is the result set itself when the result set spans every row, which is the case for JDBC. Readers whose result set object is a single row, which is the case for R2DBC, return something shared by the rows of one result, such as the row metadata, so that the ordinals survive from one row to the next.Returning a different object per row is safe: the ordinals are then resolved again for each row.
An R2DBC
Rowis only valid for the row being consumed, so the resolved ordinals are tied to theRowMetadatainstead, which the drivers share between the rows of one result. A driver that returns fresh metadata per row simply causes the ordinals to be resolved again for each row.- Parameters:
resultSet- The result set- Returns:
- The object the resolved ordinals belong to
-
exceptionForColumn
- Parameters:
name- The column identifiere- The cause- Returns:
- The exception describing a column that cannot be read
-
getConversionService
public io.micronaut.core.convert.ConversionService getConversionService()Description copied from interface:ResultReaderGet conversion service.- Specified by:
getConversionServicein interfaceResultReader<io.r2dbc.spi.Row, I>- Returns:
- the instance of
ConversionService
-
readDynamic
public @Nullable Object readDynamic(@NonNull io.r2dbc.spi.Row resultSet, String index, @NonNull DataType dataType) Description copied from interface:ResultReaderRead a value dynamically using the result set and the given name and data type.- Specified by:
readDynamicin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setindex- The namedataType- The data type- Returns:
- The value, can be null
-
readLong
Description copied from interface:ResultReaderRead a long value for the given name.- Specified by:
readLongin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The long value
-
readChar
Description copied from interface:ResultReaderRead a char value for the given name.- Specified by:
readCharin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The char value
-
readDate
Description copied from interface:ResultReaderRead a date value for the given name.- Specified by:
readDatein interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The char value
-
readTimestamp
Description copied from interface:ResultReaderRead a timestamp value for the given index.- Specified by:
readTimestampin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setindex- The index (such as the column name)- Returns:
- The char value
-
readString
Description copied from interface:ResultReaderRead a string value for the given name.- Specified by:
readStringin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The string value
-
readInt
Description copied from interface:ResultReaderRead an int value for the given name.- Specified by:
readIntin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The int value
-
readBoolean
Description copied from interface:ResultReaderRead a boolean value for the given name.- Specified by:
readBooleanin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The boolean value
-
readFloat
Description copied from interface:ResultReaderRead a float value for the given name.- Specified by:
readFloatin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The float value
-
readByte
Description copied from interface:ResultReaderRead a byte value for the given name.- Specified by:
readBytein interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The byte value
-
readShort
Description copied from interface:ResultReaderRead a short value for the given name.- Specified by:
readShortin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The short value
-
readDouble
Description copied from interface:ResultReaderRead a double value for the given name.- Specified by:
readDoublein interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The double value
-
readBigDecimal
Description copied from interface:ResultReaderRead a BigDecimal value for the given name.- Specified by:
readBigDecimalin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The BigDecimal value
-
readBytes
Description copied from interface:ResultReaderRead a byte[] value for the given name.- Specified by:
readBytesin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result setname- The name (such as the column name)- Returns:
- The byte[] value
-
getRequiredValue
public <T> @Nullable T getRequiredValue(io.r2dbc.spi.Row resultSet, String name, Class<T> type) throws DataAccessException Description copied from interface:ResultReaderGet a value from the given result set for the given name and type.- Specified by:
getRequiredValuein interfaceResultReader<io.r2dbc.spi.Row, I>- Type Parameters:
T- The generic type- Parameters:
resultSet- The result setname- The nametype- The type- Returns:
- The value
- Throws:
DataAccessException- if the value cannot be read
-
next
public boolean next(io.r2dbc.spi.Row resultSet) Description copied from interface:ResultReaderMove the index to the next result if possible.- Specified by:
nextin interfaceResultReader<io.r2dbc.spi.Row, I>- Parameters:
resultSet- The result set- Returns:
- The next result
-