JdbcClient
introduced in https://github.com/spring-projects/spring-framework/issues/30931 is missing batchUpdate
method
Comment From: jhoeller
This is intentional since batchUpdate
is a rather awkward method to provide parameters for... in a JdbcClient
style. From a design perspective, JdbcClient
is a more convincing arrangement if it just addresses individual statement executions.
Also, we got SimpleJdbcInsert
in the same package providing a sophisticated arrangement for batch inserts as well. On a related note, SimpleJdbcCall
provides a similar arrangement for stored procedure calls which JdbcClient
does not cover either. Alternatively, there is always JdbcTemplate
itself for custom batch update needs.
In terms of broader alignment, DatabaseClient
does not provide support for batch updates either. Granted, R2DBC comes with a different arrangement there but equally hard to parameterize in a fluent style, as far as I'm concerned.
Comment From: hantsy
Yesterday I was just confused why lacks batch update
in JdbcClient
.
So the the solution is SimpleJdbcInsert
?
Comment From: making
you can use JdbcTemplate
for batchUpdate
directly
Comment From: shirishpandharikar
Is there a possibility to expose the underlying JdbcTemplate
or NamedParameterJdbcTemplate
from the JdbcClient
. Instead of having both JdbcClient
and JdbcTemplate
or NamedParameterJdbcTemplate
it would be good if both of them can be accessed and batch operation be executed.
Comment From: IgnatBeresnev
Definitely agree with @shirishpandharikar
- I'm unable to use
SimpleJdbcInsert
since I need to add an "ON CONFLICT ..." to the batch statement - I don't want to rely on order, so I have to use
NamedParameterJdbcTemplate
- For my select queries I use
JdbcClient
So I end up injecting both JdbcClient
and JdbcTemplate
, from which I additionally construct NamedParameterJdbcTemplate
where needed.
I'd like to inject only JdbcClient
so that my colleagues are not confused whether to use JdbcTemplate
, NamedParameterJdbcTemplate
or JdbcClient
.