在Spring JDBC中将默认ResultSet类型设置为TYPE_SCROLL_INSENSITIVE

时间:2011-11-30 06:38:33

标签: spring jdbc

根据我的看法,Spring JDBC将ResultSet.TYPE_FORWARD_ONLY中的默认ResultSet类型设置为PreparedStatementCreatorFactory。我想改变它,所以我的所有Spring DAO都会得到ResultSet.TYPE_SCROLL_INSENSITIVE所有查询。

最简单的方法是使用新的默认值扩展PreparedStatementCreatorFactory,然后让我的所有DAO使用它吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我知道这个问题已经很老了,但是以防万一有人遇到同样的问题并落在这里。

我解决此问题的方法只是通过扩展NamedParameterJdbcTemplate

示例

public class ScrollNamedParameterJdbcTemplate extends NamedParameterJdbcTemplate {

  public ScrollNamedParameterJdbcTemplate(DataSource dataSource) {
    super(dataSource);
  }

  @Override
  protected PreparedStatementCreatorFactory getPreparedStatementCreatorFactory(
      ParsedSql parsedSql, SqlParameterSource paramSource) {
    String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, paramSource);
    List<SqlParameter> declaredParameters =
        NamedParameterUtils.buildSqlParameterList(parsedSql, paramSource);
    PreparedStatementCreatorFactory preparedStatementCreatorFactory =
        new PreparedStatementCreatorFactory(sqlToUse, declaredParameters);
    preparedStatementCreatorFactory.setResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE);
    return preparedStatementCreatorFactory;
  }
}

然后为此特定模板创建一个bean定义

@Bean("scrollNamedParameterJdbcTemplate")
  NamedParameterJdbcOperations scrollNamedParameterJdbcTemplate(DataSource dataSource) {
    return new ScrollNamedParameterJdbcTemplate(dataSource);
  }

然后,如果需要在结果集上使用滚动类型,则只需注入此模板