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

Sisipan/Pembaruan Batch MyBatis Untuk Oracle

Jawaban yang diterima bukanlah cara yang disarankan untuk menangani operasi batch. Itu tidak menunjukkan pernyataan batch yang benar karena mode pelaksana batch harus digunakan saat membuka sesi. Lihat posting ini di mana kontributor kode merekomendasikan bahwa cara yang tepat untuk memperbarui (atau menyisipkan) adalah dengan membuka sesi dalam mode batch dan berulang kali memanggil pembaruan (atau menyisipkan) untuk satu catatan.

Inilah yang berhasil untuk saya:

public void updateRecords(final List<GisObject> objectsToUpdate) {
    final SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession(ExecutorType.BATCH);
    try {
        final GisObjectMapper mapper = sqlSession.getMapper(GisObjectMapper.class);
        for (final GisObject gisObject : objectsToUpdate) {
            mapper.updateRecord(gisObject);
        }
        sqlSession.commit();
    } finally {
        sqlSession.close();
    }
}

Jangan gunakan foreach dalam pembaruan/penyisipan Anda dan pastikan bahwa itu hanya memperbarui/menyisipkan satu catatan. Saya mengalami kesalahan Oracle yang tidak dapat diselesaikan dengan melakukannya sesuai dengan jawaban yang diterima (karakter tidak valid, pernyataan tidak berakhir, dll.). Seperti yang ditunjukkan oleh posting tertaut, pembaruan (atau sisipan) yang ditampilkan dalam jawaban yang diterima sebenarnya hanyalah pernyataan sql raksasa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan daftar semua tabel di Oracle?

  2. Perbandingan tanggal Oracle rusak karena DST

  3. 11 Cara Menemukan Baris Duplikat yang memiliki Kunci Utama di Oracle

  4. Bagaimana cara mengubah 2 kueri dengan kolom umum (A, B) dan (A, C) menjadi hanya satu (A, B, C)?

  5. Menginstal Oracle 9i Developer Suite 2.0 di Windows