1

我正在使用 Springjdbc 模板执行一个选择查询,它返回近 1000 个 ID 作为一组。但使用 Spring jdbc 模板执行需要 10 分钟。但在 Toad 中,相同的查询会在几秒钟内执行。

有人可以帮我解决这个问题吗?

我正在使用以下代码:

return (HashSet)this.jdbcTemplate.query(
   (String) sqlMap.get("SQL_NRChargePromoApIDList"), new Object[] {  }, new DataMapperAPID());

public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        HashSet compList = new HashSet();        
        compList.add(rs.getString("ap_id"));
        while(rs.next()){
            compList.add(rs.getString("ap_id"));
        }
        return compList;
      }
4

1 回答 1

1

您不需要调用 rs.next(),因为您传递给JdbcTemplate.query()的 RowMapper 的全部意义在于它会自动遍历结果集中的所有行并将映射对象插入到列表中,然后它将返回。行映射器应该简单地提取 app_id 然后返回它。完成后,您将返回一个列表。

于 2012-07-16T13:55:47.687 回答