Как я могу выполнить следующий SQL с масштабируемым способом, используя JdbcTemplate, работающий на mySQL. В этом случае, масштабируемые средства:Вставка нескольких строк с использованием JdbcTemplate
- заявление только один 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
, но я бы хотел этого избежать.
Можем ли мы сделать то же самое, используя только JDBC? ? –
Это не имеет ничего общего с JdbcTemplate или даже JDBC. Вы не можете сделать это в SQL, периоде (или стандартном SQL, так или иначе), так что вы, конечно же, не сможете это сделать в JdbcTemplate. – skaffman
@skaffman: Я обновил свой вопрос, чтобы сказать, что я использую mySQL. Возможно, это функция mySQL, но она описана в http://dev.mysql.com/doc/refman/5.1/en/insert.html примерно на четверть пути вниз: «Операторы INSERT, которые используют синтаксис VALUES, могут вставлять несколько строк.Чтобы сделать это, включите несколько списков значений столбцов, каждый из которых заключен в круглые скобки и разделен запятыми. Пример: « –