我在项目中使用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/

10-15 11:05