Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Batch Upserts (Sisipkan/Kemas kini) dengan Cekap dalam MyBatis dengan Oracle?

Bagaimana untuk Melaksanakan Batch Upserts (Sisipkan/Kemas kini) dengan Cekap dalam MyBatis dengan Oracle?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-29 04:09:10955semak imbas

How to Efficiently Perform Batch Upserts (Insert/Update) in MyBatis with Oracle?

Batch Upsert (Sisipkan/Kemas kini) dalam MyBatis untuk Oracle

Konteks:

Dalam MyBatis, anda perlu memasukkan atau mengemas kini senarai objek ke dalam pangkalan data Oracle semasa mengendalikan kemungkinan pendua. Penyelesaian semasa melibatkan gelung manual dan operasi sisipan/kemas kini yang berasingan, yang tidak cekap.

Penyelesaian:

Untuk mengoptimumkan proses, pertimbangkan untuk menggunakan keupayaan batching MyBatis dan Oracle's fungsi "gabung". Walau bagaimanapun, gabungan batching tidak disokong secara langsung dalam MyBatis.

Pendekatan Disyorkan:

Untuk mencapai peningkatan kelompok, gunakan langkah berikut:

  1. Gunakan Pelaksana Kelompok: Buka sesi MyBatis dalam mod kelompok menggunakan ExecutorType.BATCH.
  2. Lelar Atas Rekod: Gelung senarai objek.
  3. Panggil Kemas Kini/Sisipkan Rekod Tunggal: Untuk setiap objek, panggil kaedah kemas kini/sisip yang sesuai pada pemeta, yang sepatutnya beroperasi pada satu rekod.
  4. Komit Perubahan: Akhir sekali, lakukan perubahan dalam sesi.

Contoh Kod:

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();
    }
}

Nota:

Pastikan bahawa kaedah kemas kini/masukkan dalam pemeta dikonfigurasikan dengan sewajarnya untuk operasi rekod tunggal. Menggunakan foreach atau menjana pernyataan SQL gergasi untuk pemprosesan kelompok tidak disyorkan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Batch Upserts (Sisipkan/Kemas kini) dengan Cekap dalam MyBatis dengan Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn