gpt4 book ai didi

spring - 用 java 8 lambda 表达式替换 RowMapper 对象

转载 作者:行者123 更新时间:2023-12-02 08:23:15 25 4
gpt4 key购买 nike

我在我的项目中使用 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 lambda 表达式替换匿名类 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com