2016-06-20 1 views
1

J'essaie de comprendre Spring 4 et Java 8 en même temps. J'ai une classeComment faire pour queryForList au printemps 4 en utilisant Java 8?

EmployeeDTO 
|-id 
|-Emp_Name 
|-Address 

Lorsque je tente le code ci-dessous pour aller chercher 1 employé, il fonctionne très bien:

public EmployeeDTO getEmpoloyeebyID(String empId) { 

     return springJdbcTemplate.queryForObject(sql, 
       (rs, rowNum) -> { 
        return new EmployeeDTO(rs.getString("Emp_Name"), rs 
          .getString("Address")); 
       }, empId); 
    } 

Mais maintenant, je veux obtenir une liste des objets à l'aide du printemps JdbcTemplate et Java 8 Je sais que je pourrais être en mesure de passer à travers en utilisant Mappers. Mais je veux apprendre à le faire avec Java 8 comme l'exemple ci-dessus. J'ai l'air élégant.

public List<EmployeeDTO> getAllEmpoloyeeByAge(Integer age) { 

     return springJdbcTemplate.queryForList(sql,<to-do>, age); 
    } 

Répondre

2

classe JdbcTemplate ne dispose pas d'une méthode nommée queryForList que vous pouvez transmettre votre expression lambda à.

Vous devez utiliser l'une des méthodes query, the one qui prend une chaîne SQL, un RowMapper et arguments requête:

public List<EmployeeDTO> getAllEmployeesByAge(int age) { 
    return springJdbcTemplate.query(sql, (rs, rowNum) -> 
     new EmployeeDTO(rs.getString("Emp_Name"), rs.getString("Address")), age); 
} 

Notez que correspond à votre expression lambda l'argument RowMapper de la méthode query.