gpt4 book ai didi

java - 如何使用java lambda表达式实现RowMapper

转载 作者:行者123 更新时间:2023-12-01 23:51:42 25 4
gpt4 key购买 nike

我有一个有效的 RowMapper 代码,它将数据库表行映射到 java 对象。我想使用 lambda 表达式更改实现。但是,我总是遇到错误;代码片段如下;

String queryString = "select * from person where person_id = ? ";
RowMapper rowMapper = (rs, rowNum) -> {

Person p = new Person();

p.setName(rs.getString("personName"));
p.setAddress(rs.getString("address"));
p.setAge(rs.getInt("age"));
}

Person person = getJdbcTemplate().query(queryString, personId, rowMapper);

return person;

有人可以帮助我正确实现代码吗?有办法获取人员名单吗?

最佳答案

RowMapper是一个具有单个抽象方法的接口(interface)(不是从 Object 的方法继承),因此 it can be considered a functional interface 。它的函数方法接受一个 ResultSet 和一个 int,并返回一个对象。

代码的第一个问题是返回的对象类型是接口(interface)的泛型类型。当前与 RowMapper 一起使用时,您使用的是原始类型 which you shouldn't do 。第二个问题是lambda表达式不返回任何对象,因此它不能符合除了要返回对象之外的函数方法。

因此,更正后的代码将是:

RowMapper<Person> rowMapper = (rs, rowNum) -> {
Person p = new Person();
p.setName(rs.getString("personName"));
p.setAddress(rs.getString("address"));
p.setAge(rs.getInt("age"));
return p;
};

关于java - 如何使用java lambda表达式实现RowMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923360/

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