標準 SQL 都提供了下面這種方式一條 INSERT INTO 語句插入多條記錄sql
INSERT INTO Customers(Id, Name, Age) VALUES (1, 'Name1', 21.5), (2, 'Name2', 32.3)sqlserver
VALUES 以後用括號列出每一條記錄。可是在 Java 中想把上面的語句轉換成 PreparedStatement 來插入多條記錄時就有些問題。要麼寫成server
INSERT INTO Customers(Id, Name, Age) VALUES(?, ?, ?), (?, ?, ?), (?, ?, ?) ....blog
咱們不知道 VALUES 後應該列多少個問號,並且 JDBC 對參數的個數是有限制的,最多 2000 個參數。若是根據字段個數來算一次添加多少條記錄,那麼這條 SQL 語句也是動態的,不能很好的做爲 PreparedStatement 進行預編譯。以一個表三個字段爲例,2000 個參數下一次性最多能插入記錄數 666 條,也可能因爲輸入是 666 條記錄的任意數量,因此生成的語句非靜態的。ip
這種方式與每次手動拼湊一個徹底靜態的 INSERT INTO 語句應該不會有太多的差異。get
若是隻是寫成 編譯
INSERT INTO Customers(Id, Name, Age) VALUES(?, ?, ?)im
而後試圖進行下面的操做 閱讀全文 >>block