sql >> Databáze >  >> RDS >> Oracle

pomocí foreach proveďte dávkové vložení s mybatis

Vložit uvnitř Mybatis foreach není dávkový , jedná se o jediný (může se stát obřím) SQL příkazem a přináší nevýhody:

  • některé databáze, jako je zde Oracle, nepodporuje.
  • v relevantních případech:bude potřeba vložit velký počet záznamů a bude dosažen limit nakonfigurovaný v databázi (ve výchozím nastavení kolem 2000 parametrů na příkaz) a případně může dojít k chybě zásobníku DB, pokud bude samotný příkaz příliš velký.

Iterace kolekce se nesmí provádět v mybatis XML. Stačí provést jednoduché Vložit prohlášení v Java Foreach smyčka.Nejdůležitější je typ relace Executor .

SqlSession session = sessionFactory.openSession(ExecutorType.BATCH);
for (Model model : list) {
    session.insert("insertStatement", model);
}
session.flushStatements();

Případně si myslím, že zde bude stačit použít ExecutorType.REUSE bez splachovacích příkazů.

Na rozdíl od výchozího ExecutorType.SIMPLE , příkaz bude připraven jednou a proveden pro každý záznam, který má být vložen.



  1. Jak zálohovat databázi MySQL

  2. mysql LEVÉ spojení pro maximální hodnotu pravé tabulky

  3. Jak najít duplicitní záznamy pomocí klauzule Seskupit podle a mít v SQL Server - SQL Server / Výukový program TSQL část 132

  4. Asp Classic Connection String 500 – Interní chyba serveru