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.