2014-09-30 7 views
6

Sto aggiornando un'applicazione Spring 3 alla Spring 4. My @Repository ha oggetti ParameterizedRowMapper per associare i risultati SQL agli oggetti. Ma dalla primavera 4 quell'interfaccia è stata deprecated "a favore del normale SingleColumnRowMapper". Ma io uso i mapper per mappare le colonne multiple. Come intendo mappare più colonne usando SingleColumnRowMapper? O sono intenzionato a fare qualcosa di completamente diverso?Aggiornamento da ParameterizedRowMapper a SingleColumnRowMapper per più colonne

Per esempio, ecco il tipo di codice che ho adesso:

private static final ParameterizedRowMapper<Thing> THING_ENTRY_MAPPER = new ParameterizedRowMapper<Thing>() { 

     @Override 
     public Thing mapRow(ResultSet rs, int rowNum) throws SQLException { 
      return new Thing(rs.getLong(1), rs.getLong(2), rs.getInt(3)); 
     } 
    }; 


    @Override 
    public List<Thing> getThings(
      ID id, long start, long end) { 
     final Map<String, Object> params = new HashMap<String, Object>(4); 
     putIDParams(params, id); 
     putTimeRangeParams(params, start, end); 
     return getNamedParameterJdbcTemplate().query(QUERY_THING, params, 
      THING_ENTRY_MAPPER); 
    } 

Come devo essere attuazione di tale tipo di funzionalità ora?

+0

Hmm non so perché è lì ma sono sicuro che è un refuso. Dovrebbe essere il normale ['RowMapper'] (http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/RowMapper.html). Poiché Spring 3.x è parametrizzato e come tale il parametro ParameterizedRowMapper è obsoleto. –

+0

Vedere anche http://stackoverflow.com/questions/6960542/parameterizedrowmapper-is-recommended-or-rowmapper – Raedwald

risposta

10

Il Javadoc sembra essere sbagliato. I progettisti del framework Spring probabilmente intendono utilizzare l'interfaccia RowMapper<Thing> per sostituire ParameterizedRowMapper<Thing>. Cioè, usa l'interfaccia di base.