在Spring JDBC中将默认结果集类型设置为TYPE_SCROLL_INSENSITIVE

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

从我所见,Spring JDBC在ResultSet.TYPE_FORWARD_ONLY中将默认的ResultSet类型设置为PreparedStatementCreatorFactory。我想更改它,以便所有查询的Spring DAO都获得ResultSet.TYPE_SCROLL_INSENSITIVE

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

谢谢。

spring jdbc
1个回答
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);
  }

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

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