Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

menggunakan foreach untuk melakukan penyisipan batch dengan mybatis

Sisipkan di dalam Mybatis foreach bukan kumpulan , ini adalah pernyataan SQL tunggal (bisa menjadi raksasa) dan membawa kekurangan:

  • beberapa database seperti Oracle di sini tidak mendukung.
  • dalam kasus yang relevan:akan ada sejumlah besar catatan untuk dimasukkan dan batas konfigurasi database (secara default sekitar 2000 parameter per pernyataan) akan terkena, dan akhirnya mungkin kesalahan tumpukan DB jika pernyataan itu sendiri menjadi terlalu besar.

Iterasi atas koleksi tidak boleh dilakukan di mybatis XML. Cukup jalankan Sisipkan sederhana pernyataan dalam Java Foreach loop.Yang paling penting adalah jenis Pelaksana sesi .

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

Saya pikir di sini cukup menggunakan ExecutorType.REUSE tanpa pernyataan pembilasan.

Tidak seperti ExecutorType.SIMPLE default , pernyataan akan disiapkan sekali dan dieksekusi untuk setiap record yang akan disisipkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cara Membuat Tabel Jika Belum Ada di Oracle

  2. Gunakan nilai variabel string dalam loop SQL FOR-IN (SELECT)

  3. Bagaimana cara mengekspor data dengan Oracle SQL Developer?

  4. Permintaan untuk mencari semua paket untuk tabel dan/atau kolom

  5. Pengguna Umum Dengan hak istimewa SYSBACKUP