【问题标题】:Rowmapper vs ResultSetExtractor in spring春季的 Rowmapper 与 ResultSetExtractor
【发布时间】:2021-10-22 04:00:24
【问题描述】:

我在使用 Spring jdbc RowMapper 时遇到了奇怪的问题:-

这是我的代码

public void test(){
 String sql=" Query  will fetch records where dateColumn<='2021-08-17' Limit 1";
 jdbcTemplate.query(sql, new ModelRowMapper());
}

public class ModelRowMapper implements RowMapper<ModelRowMapper> {
    @Override
    public ModelRowMapper mapRow(ResultSet rs, int rowNum) throws SQLException {
     ModelRowMapper model= new ModelRowMapper();
     System.out.println(rs.getString("value"));

  }
}

例子:-

db records:-
2021-08-21
2021-08-15
2021-08-13

我期待的输出是2021-08-15

在 ModelRowMapper 类中观察到 resultSet 打印两个值(第一个是有效的:- 2021-08-15)然后打印无效值,在响应中我也会得到无效值

但是当我使用 ResultSetExtractor 时,上面的查询可以正常工作

jdbcTemplate.query(sql, new ResultSetExtractor<String>() {
    @Override
    public String extractData(ResultSet rs) throws SQLException, DataAccessException {
        while (rs.next()) {
           System.err.println(rs.getString("value"));
        }
        //prints only one value and returns the same value
        return "";
    }
});

rowMapper 会出现什么问题?... 任何建议都会有所帮助.......

【问题讨论】:

  • “无效”值是“2021-08-13”还是不同。如果值为“2021-08-13”,那么您的查询似乎是错误的,因为它没有正确限制结果。 RowMapper 将行映射到您想要的任何对象,但将行映射到 ModelRowMapper 是没有意义的。它应该是ModelRowMapper implements RowMapper&lt;Model&gt;,其中模型是您的域对象。看看这个tutorial

标签: java spring resultset rowmapper


【解决方案1】:

您在某种程度上误解了应该如何调用rowmapper!使用下面的语法,这会给你想要的结果。

    public void test(){
       String sql=" Query  will fetch records where dateColumn<='2021-08-17' Limit 1";
       jdbcTemplate.query(query, new RowMapper<ModelRowMapper>(){
        @Override
        public ModelRowMapper mapRow(ResultSet rs, int rowNum) throws 
        SQLException {
              ModelRowMapper model= new ModelRowMapper();
              System.out.println(rs.getString("value"));
       }
      });
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2012-01-14
    • 2016-02-27
    • 2020-07-23
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多