根据我的看法,Spring JDBC将ResultSet.TYPE_FORWARD_ONLY
中的默认ResultSet类型设置为PreparedStatementCreatorFactory
。我想改变它,所以我的所有Spring DAO都会得到ResultSet.TYPE_SCROLL_INSENSITIVE
所有查询。
最简单的方法是使用新的默认值扩展PreparedStatementCreatorFactory
,然后让我的所有DAO使用它吗?
感谢。
答案 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);
}
然后,如果需要在结果集上使用滚动类型,则只需注入此模板