2014-09-30 8 views
6

Uaktualniam aplikację Spring 3 do Spring 4. Moje @Repository ma ParameterizedRowMapper obiektów do odwzorowania wyników SQL na obiekty. Ale od wiosny 4 interfejs ten był deprecated "na rzecz zwykłego SingleColumnRowMapper". Ale używam odwzorowań do mapowania kolumn wiele. Jak mam mapować wiele kolumn za pomocą SingleColumnRowMapper? A może mam zamiar robić coś zupełnie innego?Uaktualnianie z SparametryzowaneRowMapper do SingleColumnRowMapper dla wielu kolumn

Na przykład, tutaj jest to rodzaj kodu mam teraz:

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); 
    } 

Jak mam być wdrożenie tego rodzaju funkcjonalność teraz?

+0

Hmm nie jestem pewien, dlaczego tak jest, ale jestem pewien, że to literówka. Powinien to być zwykły ['RowMapper'] (http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/RowMapper.html). Od wiosny 3.x, który jest sparametryzowany i jako taki parametr "ParameterizedRowMapper" jest przestarzały. –

+0

Zobacz także http://stackoverflow.com/questions/6960542/parameterizedrowmapper-is-recommended-or-rowmapper – Raedwald

Odpowiedz

10

Javadoc wydaje się być w błędzie. Projektanci Spring Framework prawdopodobnie zamierzają użyć interfejsu RowMapper<Thing>, aby zastąpić ParameterizedRowMapper<Thing>. To znaczy użyj interfejsu podstawowego.