0
public class ModelMapper implements ResultSetMapper<Model> {
    public Model map(int index, ResultSet resultSet, StatementContext ctx) throws SQLException {
        // Get result set meta data & column count
        ResultSetMetaData metaData = resultSet.getMetaData();
        int columns = metaData.getColumnCount();

        Map<String, Object> map = new HashMap<>(columns);
        for (int i = 1; i <= columns; ++i) {
            String columnName = metaData.getColumnName(i);
            map.put(columnName, resultSet.getObject(columnName));
        }

        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);

        return objectMapper.convertValue(map, Model.class);
    }
}

在我的ModelImplDao.class我已将其注册为@RegisterMapper(ModelMapper.class). 由于我可以看到ModelMapper该类只有一个参数Model,我如何创建一个通用的类并参数化以Model作为参数,并且我还能够将其注册ModelImplDao.class为映射器?

4

1 回答 1

0

我们不能在 T 是泛型的情况下使用 ResultMapper。它需要知道类型。或者,您可以使用这个库(http://manikandan-k.github.io/jdbi_folder/)。它提供了一种删除映射器的方法。该库将负责映射。

于 2015-10-01T11:09:59.433 回答