From 7d5b3892c48c57f5d05d3f2283f2d2d0dcd9cab5 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 21 Mar 2025 18:44:57 +0100 Subject: [PATCH] Add since 7.0 tags for stream methods See gh-34623 --- .../springframework/jdbc/object/SqlQuery.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java b/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java index dccf0cb6cd4..fd7d50e3799 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java @@ -108,6 +108,7 @@ public abstract class SqlQuery extends SqlOperation { * but it can be useful for creating the objects of the result list. * @return a result Stream of objects, one per row of the ResultSet. Normally all these * will be of the same class, although it is possible to use different types. + * @since 7.0 */ public Stream stream(Object @Nullable [] params, @Nullable Map context) throws DataAccessException { validateParameters(params); @@ -130,6 +131,7 @@ public abstract class SqlQuery extends SqlOperation { * @param params parameters for the query. Primitive parameters must * be represented by their Object wrapper type. The ordering of parameters is * significant. + * @since 7.0 */ public Stream stream(Object... params) throws DataAccessException { return stream(params, null); @@ -146,6 +148,7 @@ public abstract class SqlQuery extends SqlOperation { /** * Convenient method to stream without parameters. * @param context the contextual information for object creation + * @since 7.0 */ public Stream stream(Map context) throws DataAccessException { return stream(null, context); @@ -160,6 +163,7 @@ public abstract class SqlQuery extends SqlOperation { /** * Convenient method to stream without parameters nor context. + * @since 7.0 */ public Stream stream() throws DataAccessException { return stream(null, null); @@ -262,6 +266,7 @@ public abstract class SqlQuery extends SqlOperation { * but it can be useful for creating the objects of the result list. * @return a Stream of objects, one per row of the ResultSet. Normally all these * will be of the same class, although it is possible to use different types. + * @since 7.0 */ public Stream streamByNamedParam(Map paramMap, @Nullable Map context) throws DataAccessException { return queryByNamedParam(paramMap, context, getJdbcTemplate()::queryForStream); @@ -282,11 +287,23 @@ public abstract class SqlQuery extends SqlOperation { * @param paramMap parameters associated with the name specified while declaring * the SqlParameters. Primitive parameters must be represented by their Object wrapper * type. The ordering of parameters is not significant. + * @since 7.0 */ public Stream streamByNamedParam(Map paramMap) throws DataAccessException { return streamByNamedParam(paramMap, null); } + private R queryByNamedParam(Map paramMap, @Nullable Map context, BiFunction, R> queryFunction) { + validateNamedParameters(paramMap); + ParsedSql parsedSql = getParsedSql(); + MapSqlParameterSource paramSource = new MapSqlParameterSource(paramMap); + String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, paramSource); + @Nullable Object[] params = NamedParameterUtils.buildValueArray(parsedSql, paramSource, getDeclaredParameters()); + RowMapper rowMapper = newRowMapper(params, context); + return queryFunction.apply(newPreparedStatementCreator(sqlToUse, params), rowMapper); + } + + /** * Generic object finder method, used by all other {@code findObject} methods. * Object finder methods are like EJB entity bean finders, in that it is @@ -407,14 +424,4 @@ public abstract class SqlQuery extends SqlOperation { */ protected abstract RowMapper newRowMapper(@Nullable Object @Nullable [] parameters, @Nullable Map context); - private R queryByNamedParam(Map paramMap, @Nullable Map context, BiFunction, R> queryFunction) { - validateNamedParameters(paramMap); - ParsedSql parsedSql = getParsedSql(); - MapSqlParameterSource paramSource = new MapSqlParameterSource(paramMap); - String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, paramSource); - @Nullable Object[] params = NamedParameterUtils.buildValueArray(parsedSql, paramSource, getDeclaredParameters()); - RowMapper rowMapper = newRowMapper(params, context); - return queryFunction.apply(newPreparedStatementCreator(sqlToUse, params), rowMapper); - } - }