jdbcTemplate.query(PreparedStatementCreator psc,ResultSetExtractor rse)不返回任何结果集

问题描述 投票:0回答:1

我正在将连接的创建转换为使用JdbcTemplate类,该类处理资源的创建和释放。尽管相同查询的原始结果集返回了我的记录,但以下所示的一种实现并未返回结果集。我转换了下面的代码

ps = connection.prepareStatement(strQuery, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ps.setLong(1, getId());
objRs = ps.executeQuery();

到下面显示的那个。我使用StreamingStatementCreator的原因是因为我需要设置ResultSet.TYPE_SCROLL_INSENSITIVE和ResultSet.CONCUR_READ_ONLY。

objRs = (ResultSet) jdbcTemplate.query(new StreamingStatementCreator(strQuery),
        new PreparedStatementSetter() {
            public void setValues(PreparedStatement preparedStatement) throws SQLException {
                preparedStatement.setLong(1, getId());
            }
        }, new CustomResultSetExtractor());
public class CustomResultSetExtractor implements ResultSetExtractor<ResultSet>{
    public ResultSet extractData(ResultSet resultSet) throws SQLException, DataAccessException {
        return resultSet;
    }
}

我不熟悉这些方法。我试图寻找示例,但也许我遗漏了一些东西,我觉得代码是正确的。第一种情况返回objRs中的值,第二种情况不返回任何值。

java java-7 jdbctemplate spring-3
1个回答
1
投票

方法query(PreparedStatementCreator psc, ResultSetExtractor<T> rse)不返回ResultSet。它以ResultSet作为参数调用第二个参数,并返回由它返回的对象。

因此,您应该在ResultSet中处理CustomResultSetExtractor,并作为处理结果返回另一个对象。

© www.soinside.com 2019 - 2024. All rights reserved.