2015-10-01 5 views
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 в качестве картографа?Общий класс с параметрами

ответ

0

Мы не можем использовать ResultMapper, где T является общим. Он должен знать тип. Кроме того, вы можете использовать эту библиотеку (http://manikandan-k.github.io/jdbi_folder/). Он обеспечивает способ удаления картографов. Эта библиотека позаботится о картировании.