Oracle
 sql >> база данни >  >> RDS >> Oracle

използване на foreach за вмъкване на партида с mybatis

Вмъкване вътре в Mybatis foreach не е партидата , това е единичен (може да стане гигантски) SQL израз и носи недостатъци:

  • някои бази данни като Oracle тук не се поддържат.
  • в подходящи случаи:ще има голям брой записи за вмъкване и конфигурираното ограничение на базата данни (по подразбиране около 2000 параметъра на оператор) ще бъде достигнато и евентуално евентуална грешка в стека на DB, ако самият оператор стане твърде голям.

Итерация върху колекцията не трябва да се извършва в mybatis XML. Просто изпълнете просто Insert израз в Java Foreach цикъл.Най-важното е типът Изпълнител на сесия .

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

Мисля, че тук ще бъде достатъчно да използвате ExecutorType.REUSE без изчистване на изрази.

За разлика от ExecutorType.SIMPLE по подразбиране , операторът ще бъде подготвен веднъж и изпълнен за всеки запис за вмъкване.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем при подмяна на препратка в Visual Studio-ASP.NET

  2. Oracle (Oracle?) Joins - инструмент/скрипт за преобразуване?

  3. NAME_IN, вграден в Oracle D2k Forms

  4. Python Oracle DB Connect без Oracle Client

  5. Вземете разликата между две дати в месеци и дни в sql