从我所见,Spring JDBC在ResultSet.TYPE_FORWARD_ONLY
中将默认的ResultSet类型设置为PreparedStatementCreatorFactory
。我想更改它,以便所有查询的Spring DAO都获得ResultSet.TYPE_SCROLL_INSENSITIVE
。
最好的方法是用新的默认值简单地扩展PreparedStatementCreatorFactory
,然后让我的所有DAO都使用它吗?
谢谢。
我知道这个问题已经很老了,以防万一有人遇到同样的问题并落在这里。
我解决此问题的方法只是通过扩展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);
}
然后,如果需要在结果集上使用滚动类型,则只需注入此模板