@Override
        public RowMapper<Map<String, T>> specialize(ResultSet rs, StatementContext ctx) throws SQLException {
            List<String> keyNames = getMapKeys(rs.getMetaData(), ctx.getConfig(MapMappers.class).getCaseChange());

            return (r, c) -> {
                Map<String, T> row = new HashMap<>();

                for (int i = 0; i < keyNames.size(); i++) {
                    T value = mapper.map(r, i + 1, ctx);
                    row.put(keyNames.get(i), value);
                }

                return row;
            };
        }
Returns a {@link RowMapper} for a map with the given value type. The key type is {@link String}.

@param valueType A {@link Class} instance representing the value type for the {@link Map}
@param config    A {@link ConfigRegistry} instance
@param <T>       The value type
@return A {@link RowMapper} for a map from string to the given value type
core/src/main/java/org/jdbi/v3/core/mapper/GenericMapMapperFactory.java