W jaki sposób można wykonać następujące SQL w skalowalny sposób przy użyciu JdbcTemplate działającego na mySQL. W tym przypadku, skalowalnych środki:Wstawianie wielu wierszy przy użyciu JdbcTemplate
- oświadczenie Tylko jedna SQL jest wykonywany na serwerze
- działa dla dowolnej liczby wierszy.
Oto zestawienie:
INSERT INTO myTable (foo, bar) VALUES ("asdf", "asdf"), ("qwer", "qwer")
Załóżmy, że mam listę POJO jest z foo
i bar
dziedzinach. Zdaję sobie sprawę, że może po prostu iteracyjne nad listy i wykonanie:
jdbcTemplate.update("INSERT INTO myTable(foo, bar) VALUES (?, ?)", paramMap)
ale to nie nie osiągnąć pierwsze kryterium.
wierzę mogę również wykonać:
jdbcTemplate.batchUpdate("INSERT INTO myTable(foo, bar) VALUES (?, ?)", paramMapArray)
ale z tego co mogę powiedzieć, że będzie po prostu skompilować SQL raz i wykonać go wielokrotnie, kolejny nie pierwsze kryterium.
Ostatnią możliwością, która zdaje się spełniać oba kryteria, byłoby samodzielne zbudowanie kodu SQL przy pomocy StringBuffer
, ale chciałbym tego uniknąć.
Możemy zrobić to samo przy użyciu tylko JDBC? ? –
Nie ma to nic wspólnego z JdbcTemplate, a nawet z JDBC. Nie możesz tego zrobić w SQL, kropce (lub standardowym SQL, tak czy inaczej), więc na pewno nie możesz tego zrobić w JdbcTemplate. – skaffman
@skaffman: Zaktualizowałem moje pytanie, aby powiedzieć, że używam mySQL. Być może jest to funkcja tylko dla MySQL, ale jest opisana na stronie http://dev.mysql.com/doc/refman/5.1/en/insert.html na temat jednej czwartej drogi do dołu: "INSERT, które używają składni VALUES mogą wstawiać Aby to zrobić, dołącz wiele list wartości kolumn, każda ujęta w nawiasy i oddzielona przecinkami Przykład: " –