From 97a02ae2d80f163631d3379eac593efd8d5ed2a9 Mon Sep 17 00:00:00 2001 From: Thomas Risberg Date: Wed, 3 Jun 2009 19:26:24 +0000 Subject: [PATCH] improved integration; added delegation to NamedParameterJdbcTemplate for batchUpdate from SimpleJdbcTemplate; added call to proteced getParsedSql method; fixed bugs (SPR-3322, SPR-5162) git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@1308 50f2f4bb-b051-0410-bef5-90022cba6387 --- .../NamedParameterBatchUpdateUtils.java | 6 +++--- .../namedparam/NamedParameterJdbcTemplate.java | 3 ++- .../jdbc/core/simple/SimpleJdbcTemplate.java | 18 +++++------------- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterBatchUpdateUtils.java b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterBatchUpdateUtils.java index dd976d70dd5..4aefb450de3 100644 --- a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterBatchUpdateUtils.java +++ b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterBatchUpdateUtils.java @@ -8,18 +8,18 @@ import org.springframework.jdbc.core.JdbcOperations; import org.springframework.jdbc.core.BatchPreparedStatementSetter; /** - * Generic utility methods for working with JDBC batch statements. Mainly for internal use + * Generic utility methods for working with JDBC batch statements using named parameters. Mainly for internal use * within the framework. * * @author Thomas Risberg */ public class NamedParameterBatchUpdateUtils extends BatchUpdateUtils { - public static int[] executeBatchUpdateWithNamedParameters(String sql, final SqlParameterSource[] batchArgs, JdbcOperations jdbcOperations) { + public static int[] executeBatchUpdateWithNamedParameters(final ParsedSql parsedSql, + final SqlParameterSource[] batchArgs, JdbcOperations jdbcOperations) { if (batchArgs.length <= 0) { return new int[] {0}; } - final ParsedSql parsedSql = NamedParameterUtils.parseSqlStatement(sql); String sqlToUse = NamedParameterUtils.substituteNamedParameters(parsedSql, batchArgs[0]); return jdbcOperations.batchUpdate( sqlToUse, diff --git a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java index cd0a6afe778..baf55b2f65a 100644 --- a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java +++ b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java @@ -272,7 +272,8 @@ public class NamedParameterJdbcTemplate implements NamedParameterJdbcOperations } public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs) { - return NamedParameterBatchUpdateUtils.executeBatchUpdateWithNamedParameters(sql, batchArgs, getJdbcOperations()); + ParsedSql parsedSql = this.getParsedSql(sql); + return NamedParameterBatchUpdateUtils.executeBatchUpdateWithNamedParameters(parsedSql, batchArgs, getJdbcOperations()); } /** diff --git a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/simple/SimpleJdbcTemplate.java b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/simple/SimpleJdbcTemplate.java index 4cf95a4d3f5..d350a2dd37a 100644 --- a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/simple/SimpleJdbcTemplate.java +++ b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/simple/SimpleJdbcTemplate.java @@ -25,11 +25,9 @@ import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcOperations; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.BatchUpdateUtils; -import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.SqlParameterSource; -import org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils; import org.springframework.util.ObjectUtils; /** @@ -235,29 +233,23 @@ public class SimpleJdbcTemplate implements SimpleJdbcOperations { } public int[] batchUpdate(String sql, List batchArgs) { - return BatchUpdateUtils.executeBatchUpdate(sql, batchArgs, new int[0], getJdbcOperations()); + return batchUpdate(sql, batchArgs, new int[0]); } public int[] batchUpdate(String sql, List batchArgs, int[] argTypes) { - return batchUpdate(sql, batchArgs, argTypes); + return BatchUpdateUtils.executeBatchUpdate(sql, batchArgs, argTypes, getJdbcOperations()); } public int[] batchUpdate(String sql, Map[] batchValues) { - SqlParameterSource[] batchArgs = new SqlParameterSource[batchValues.length]; - int i = 0; - for (Map values : batchValues) { - batchArgs[i] = new MapSqlParameterSource(values); - i++; - } - return batchUpdate(sql, batchArgs); + return getNamedParameterJdbcOperations().batchUpdate(sql, batchValues); } public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs) { - return NamedParameterBatchUpdateUtils.executeBatchUpdateWithNamedParameters(sql, batchArgs, getJdbcOperations()); + return getNamedParameterJdbcOperations().batchUpdate(sql, batchArgs); } - /** + /* * Considers an Object array passed into a varargs parameter as * collection of arguments rather than as single argument. */