Skip to content

Commit c21a9b9

Browse files
committed
Polish "Allow batch update to take a KeyHolder"
See gh-28132
1 parent 78db5dd commit c21a9b9

File tree

4 files changed

+27
-20
lines changed

4 files changed

+27
-20
lines changed

spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcOperations.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1014,9 +1014,11 @@ <T> List<T> queryForList(String sql, Object[] args, int[] argTypes, Class<T> ele
10141014
* (may also contain special JDBC-defined negative values for affected rows such as
10151015
* {@link java.sql.Statement#SUCCESS_NO_INFO}/{@link java.sql.Statement#EXECUTE_FAILED})
10161016
* @throws DataAccessException if there is any problem issuing the update
1017+
* @since 6.1
10171018
* @see org.springframework.jdbc.support.GeneratedKeyHolder
10181019
*/
1019-
int[] batchUpdate(PreparedStatementCreator psc, BatchPreparedStatementSetter pss, KeyHolder generatedKeyHolder) throws DataAccessException;
1020+
int[] batchUpdate(PreparedStatementCreator psc, BatchPreparedStatementSetter pss,
1021+
KeyHolder generatedKeyHolder) throws DataAccessException;
10201022

10211023
/**
10221024
* Execute a batch using the supplied SQL statement with the batch of supplied arguments.

spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1021,7 +1021,9 @@ public int update(String sql, @Nullable Object... args) throws DataAccessExcepti
10211021
}
10221022

10231023
@Override
1024-
public int[] batchUpdate(final PreparedStatementCreator psc, final BatchPreparedStatementSetter pss, final KeyHolder generatedKeyHolder) throws DataAccessException {
1024+
public int[] batchUpdate(final PreparedStatementCreator psc, final BatchPreparedStatementSetter pss,
1025+
final KeyHolder generatedKeyHolder) throws DataAccessException {
1026+
10251027
int[] result = execute(psc, getPreparedStatementCallback(pss, generatedKeyHolder));
10261028

10271029
Assert.state(result != null, "No result array");

spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcOperations.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -556,8 +556,8 @@ int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHol
556556
int[] batchUpdate(String sql, SqlParameterSource[] batchArgs);
557557

558558
/**
559-
* Execute a batch using the supplied SQL statement with the batch of supplied arguments,
560-
* returning generated keys.
559+
* Execute a batch using the supplied SQL statement with the batch of supplied
560+
* arguments, returning generated keys.
561561
* @param sql the SQL statement to execute
562562
* @param batchArgs the array of {@link SqlParameterSource} containing the batch of
563563
* arguments for the query
@@ -566,6 +566,7 @@ int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHol
566566
* (may also contain special JDBC-defined negative values for affected rows such as
567567
* {@link java.sql.Statement#SUCCESS_NO_INFO}/{@link java.sql.Statement#EXECUTE_FAILED})
568568
* @throws DataAccessException if there is any problem issuing the update
569+
* @since 6.1
569570
* @see org.springframework.jdbc.support.GeneratedKeyHolder
570571
*/
571572
int[] batchUpdate(String sql, SqlParameterSource[] batchArgs, KeyHolder generatedKeyHolder);
@@ -582,7 +583,9 @@ int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHol
582583
* (may also contain special JDBC-defined negative values for affected rows such as
583584
* {@link java.sql.Statement#SUCCESS_NO_INFO}/{@link java.sql.Statement#EXECUTE_FAILED})
584585
* @throws DataAccessException if there is any problem issuing the update
586+
* @since 6.1
585587
* @see org.springframework.jdbc.support.GeneratedKeyHolder
586588
*/
587-
int[] batchUpdate(String sql, SqlParameterSource[] batchArgs, KeyHolder generatedKeyHolder, String[] keyColumnNames);
589+
int[] batchUpdate(String sql, SqlParameterSource[] batchArgs, KeyHolder generatedKeyHolder,
590+
String[] keyColumnNames);
588591
}

spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,9 @@ public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs, KeyHolder g
400400
}
401401

402402
@Override
403-
public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs, KeyHolder generatedKeyHolder, String[] keyColumnNames) {
403+
public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs, KeyHolder generatedKeyHolder,
404+
@Nullable String[] keyColumnNames) {
405+
404406
if (batchArgs.length == 0) {
405407
return new int[0];
406408
}
@@ -416,20 +418,18 @@ public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs, KeyHolder g
416418
}
417419
Object[] params = NamedParameterUtils.buildValueArray(parsedSql, paramSource, null);
418420
PreparedStatementCreator psc = pscf.newPreparedStatementCreator(params);
419-
return getJdbcOperations().batchUpdate(
420-
psc,
421-
new BatchPreparedStatementSetter() {
422-
@Override
423-
public void setValues(PreparedStatement ps, int i) throws SQLException {
424-
Object[] values = NamedParameterUtils.buildValueArray(parsedSql, batchArgs[i], null);
425-
pscf.newPreparedStatementSetter(values).setValues(ps);
426-
}
427-
@Override
428-
public int getBatchSize() {
429-
return batchArgs.length;
430-
}
431-
},
432-
generatedKeyHolder);
421+
return getJdbcOperations().batchUpdate(psc, new BatchPreparedStatementSetter() {
422+
@Override
423+
public void setValues(PreparedStatement ps, int i) throws SQLException {
424+
Object[] values = NamedParameterUtils.buildValueArray(parsedSql, batchArgs[i], null);
425+
pscf.newPreparedStatementSetter(values).setValues(ps);
426+
}
427+
428+
@Override
429+
public int getBatchSize() {
430+
return batchArgs.length;
431+
}
432+
}, generatedKeyHolder);
433433
}
434434

435435

0 commit comments

Comments
 (0)