Oracle
 sql >> Baza danych >  >> RDS >> Oracle

używanie foreach do wstawiania wsadu w mybatis

Wstaw wewnątrz Mybatis foreach nie jest partią , jest to pojedyncza (może stać się gigantyczna) instrukcja SQL, która ma wady:

  • niektóre bazy danych, takie jak Oracle tutaj, nie są obsługiwane.
  • w odpowiednich przypadkach:będzie duża liczba rekordów do wstawienia i zostanie osiągnięty limit skonfigurowany w bazie danych (domyślnie około 2000 parametrów na instrukcję) i ewentualnie błąd stosu bazy danych, jeśli sama instrukcja stanie się zbyt duża.

Iteracja po kolekcji nie może być wykonywana w XML mybatis. Wystarczy wykonać proste Wstaw oświadczenie w Java Foreach pętla.Najważniejszy jest typ executora sesji .

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

Wydaje mi się, że tutaj wystarczy użyć ExecutorType.REUSE bez instrukcji dotyczących płukania.

W przeciwieństwie do domyślnego ExecutorType.SIMPLE , oświadczenie zostanie przygotowane raz i wykonane dla każdego rekordu do wstawienia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd zbyt małego bufora podczas używania XMLAgg/XMLElement

  2. dołącz do trzech tabel, aby uzyskać konkretny wynik

  3. Puste warunki Oracle, aby sprawdzić „ ” warunek

  4. Błąd nieprawidłowego identyfikatora dla v_MONTH w zapytaniu dynamicznym

  5. Czy w Oracle istnieje funkcja, która oblicza różnicę między dwiema datami?