Как я могу выполнить следующий SQL масштабируемым способом, используя JdbcTemplate, работающий на mySQL. В этом случае масштабируемость означает:
- На сервере выполняется только один оператор SQL
- он работает для любого количества строк.
Вот заявление:
INSERT INTO myTable (foo, bar) VALUES ("asdf", "asdf"), ("qwer", "qwer")
Предположим, что у меня есть список POJO с полями foo
и bar
. Я понимаю, что могу просто перебрать список и выполнить:
jdbcTemplate.update("INSERT INTO myTable(foo, bar) VALUES (?, ?)", paramMap)
но это не соответствует первому критерию.
Я считаю, что я мог бы также выполнить:
jdbcTemplate.batchUpdate("INSERT INTO myTable(foo, bar) VALUES (?, ?)", paramMapArray)
но из того, что я могу сказать, это просто скомпилирует SQL один раз и выполнит его несколько раз, снова не выполнив первый критерий.
Последняя возможность, которая, кажется, удовлетворяет обоим критериям, состоит в том, чтобы просто создать SQL самостоятельно с помощью StringBuffer
, но я бы хотел этого избежать.