我在项目中使用Spring JdbcTemplate类,我有以下代码:
List<PersonDTO> personList = jdbcTemplate.query(query, new RowMapper<PersonDTO>() {
@Override
public PersonDTO mapRow(ResultSet rs, int rowNumber) throws SQLException {
PersonDTO personDTO = new PersonDTO ();
personDTO.setPerId(rs.getString("COL_ONE"));
personDTO.setIdTypeCd(rs.getString("COL_TWO"));
return personDTO;
}
});
现在,我想用java8 lamda表达式替换匿名类
RowMapper
,如下所示:Runnable r1 = () -> {
System.out.println("My Runnable");
};
是否可以???
最佳答案
AFAIK RowMapper
是一个功能接口(interface),因此可以使用。 lambda表达式无法声明检查的异常,因此您需要将其包装起来...
jdbcTemplate.query(query, (ResultSet rs, int rowNumber) -> {
PersonDTO personDTO = new PersonDTO ();
personDTO.setPerId(rs.getString("COL_ONE"));
personDTO.setIdTypeCd(rs.getString("COL_TWO"));
return personDTO;
});
评论是关于:由于该功能接口(interface)已经声明抛出异常,因此无需捕获该异常。
关于spring - 用Java 8 Lambda表达式替换RowMapper对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49650705/