首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring RowMapper被忽略了

Spring RowMapper被忽略了
EN

Stack Overflow用户
提问于 2021-12-30 00:58:51
回答 2查看 390关注 0票数 0

我这样称呼我的存储过程:

代码语言:javascript
复制
        SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
                .returningResultSet("LookupResponse", new LookupMapper())
                .withProcedureName(lookupProcedureName);

并传递一些参数:

代码语言:javascript
复制
        SqlParameterSource in = new MapSqlParameterSource()
            .addValue("id", request.getId())
            .addValue("Username", userName)

行映射器的代码:

代码语言:javascript
复制
public class LookupMapper implements RowMapper<LookupResponse> {

    @Override
    public LookupResponse mapRow(ResultSet rs, int i) throws SQLException {
        LookupResponse lookupResponse = new LookupResponse();
        lookupResponse.setDeviceId(rs.getInt("DeviceId"));
        lookupResponse.setApplicationId(rs.getInt("AppId"));
        return lookupResponse;
    }
}

然后我叫DB:

代码语言:javascript
复制
Map<String, Object> out = jdbcCall.execute(in);

我在返回的映射中看到未映射的键值对,当我看到时:

代码语言:javascript
复制
(Collection<LookupResponse>) out.get("LookupResponse");

它返回null。

没有包含我的行映射响应的键。同一类型的代码适用于另一个存储过程..。我不知道是什么原因。控制台中没有异常,rowMapper只是被忽略了。请帮我理解。

EN

回答 2

Stack Overflow用户

发布于 2021-12-30 01:59:27

按照下面的Map<String, Object> out = jdbcCall.execute(in);更改为Map<String, Object> outMap = jdbcCall.withReturnValue().execute(in);

票数 0
EN

Stack Overflow用户

发布于 2022-02-15 19:15:46

我也有同样的问题。这样做是为了排除故障

System.out.println(out);

确保字符串以"LookupResponse“开头

{LookupResponse=[...

如果不相应地替换它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70526470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档