@Override
public <X> ValueExtractor<X> getExtractor(final JavaType<X> javaType) {
return new BasicExtractor<>(javaType, this) {
@Override
@SuppressWarnings("unchecked")
protected X doExtract(ResultSet rs, int paramIndex, WrapperOptions options) throws SQLException {
if (isDouble(rs, paramIndex)) {
return (X) FloatJavaType.INSTANCE.wrap(rs.getFloat(paramIndex), options);
} else {
return javaType.wrap(rs.getInt(paramIndex), options);
}
}
@Override
@SuppressWarnings("unchecked")
protected X doExtract(CallableStatement statement, int index, WrapperOptions options) throws SQLException {
if (isDouble(statement, index)) {
return (X) FloatJavaType.INSTANCE.wrap(statement.getFloat(index), options);
} else {
return javaType.wrap(statement.getInt(index), options);
}
}
@Override
@SuppressWarnings("unchecked")
protected X doExtract(CallableStatement statement, String name, WrapperOptions options) throws SQLException {
if (isDouble(statement, name)) {
return (X) FloatJavaType.INSTANCE.wrap(statement.getFloat(name), options);
} else {
return javaType.wrap(statement.getInt(name), options);
}
}
};
}