Pengantar Mybatis
Mybatis adalah kerangka kerja lapisan kegigihan yang sangat baik yang mendukung pertanyaan SQL biasa, prosedur tersimpan dan pemetaan lanjutan. Mybatis menghilangkan pengaturan manual hampir semua kode dan parameter JDBC dan enkapsulasi pencarian dari set hasil. Mybatis dapat menggunakan XML sederhana atau anotasi untuk konfigurasi dan pemetaan asli, antarmuka pemetaan dan pojos Java (objek java tua biasa) ke dalam catatan dalam database.
1. Mybiats Foreach Tag
Foreach terutama digunakan dalam membangun dalam kondisi, dapat mengulangi koleksi dalam pernyataan SQL. Atribut elemen foreach terutama mencakup item, indeks, koleksi, terbuka, pemisah, dan tutup. Item mewakili alias ketika setiap elemen dalam koleksi diulang. Indeks menentukan nama untuk mewakili posisi yang setiap iterasi dicapai selama proses iterasi. Open mewakili apa yang dimulai dengan pernyataan, pemisah mewakili simbol apa yang digunakan sebagai pemisah antara setiap iterasi, dan Close mewakili apa yang diakhiri dengan. Hal yang paling kritis dan paling rawan kesalahan saat menggunakan foreach adalah atribut koleksi. Atribut ini harus ditentukan, tetapi dalam kasus yang berbeda, nilai atribut berbeda. Ada tiga situasi utama:
Jika lulus dalam adalah parameter tunggal dan jenis parameter adalah daftar, nilai atribut koleksi adalah daftar
Jika lulus dalam adalah parameter tunggal dan jenis parameter adalah array, nilai properti koleksi adalah array
Jika ada beberapa parameter yang dilewati, kita perlu merangkumnya ke dalam peta
Penggunaan spesifiknya adalah sebagai berikut:
<insert id = "insertBatch" parameTerType = "list"> masukkan ke tstudent (name, usia) <foreach collection = "list" item = "item" index = "index" open = "(" close = ")" pemisah = "Union all"> Pilih #{item.name} sebagai, #{item.age} sebagai B dari dual </foreach> foreach> sebagai, #{{{{{{{{{{{{{{{{{{{dual/foreach> sebagai B dari Dual </foreach>2. MyBatis Executortype.batch
Ada 3 jenis executortypes yang dibangun di mybatis. Standarnya sederhana. Dalam mode ini, ia membuat pernyataan preprocessing baru untuk pelaksanaan setiap pernyataan dan menyerahkan SQL dalam satu baris; Sementara mode batch menggunakan kembali pernyataan yang telah diproses sebelumnya dan menjalankan semua pernyataan pembaruan dalam batch. Jelas, mode batch memiliki masalah sendiri. Misalnya, ketika operasi sisipan, tidak ada cara untuk mendapatkan ID yang tidak meningkat sendiri sebelum transaksi diajukan, yang tidak memenuhi persyaratan bisnis dalam situasi tertentu.
Penggunaan spesifiknya adalah sebagai berikut:
*Metode satu pegas+mybatis
// Dapatkan SQLSession // Suntikkan SQLSessionTemplate asli dari Spring@AutoWiredPrivate SQLSESSIONTEMPLATE SQLSESTIONTEMPLATE; // Dapatkan sesi baru dengan Batch, secara otomatis mengirimkannya ke False // Jika pengajuan otomatis diatur ke benar, jumlah pengiriman tidak dapat dikontrol dan dikendalikan False = The Otomatis diatur ke benar, jumlah pengiriman tidak dapat dikontrol dan dikendalikan False = The Otomatis yang diatur, jumlah yang benar, jumlah pengiriman tidak dapat dikontrol dan dikontrol False = The Otomatis yang diubah, jumlah yang benar, jumlah pengiriman tidak dapat dikontrol dan dikontrol FALUFIRE PERANG sqlSessionTemplate.getSqlSessionFactory (). OpenSession (executorpe.batch, false); // dapatkan mapperfoomapper = session.getMapper (foomapper.class); int size = 10000; coba {for (int i = 0; i <size; i ++) {foo foo = new = Foo (); foo.setname (string.valueof (System.currentTimeMillis ())); foomapper.insert (foo); if (i % 1000 == 0 || i == ukuran - 1) {// kirimkan secara manual setiap 1000, sesi. (Exception e) {// Tidak ada data yang dikirimkan dapat digulirkan kembali session.rollback ();} akhirnya {session.close ();} spring+mybatisMetode 2:
Dikombinasikan dengan mapper umum alias SQL, yang terbaik adalah memiliki nama paket + nama kelas
public void insertBatch (peta <string, objek> parammap, daftar <user> daftar) melempar pengecualian {// Dapatkan sesi baru dengan batch, secara otomatis mengirimkannya ke false // jika pengiriman otomatis diatur ke true, jumlah pengiriman tidak dapat dikontrol dan SIQ yang terpadu diubah ke pengajuan terpadu terakhir, yang dapat menyebabkan ingatan SQLOWS SUMS = sqlSessionTemplate.getSqlSessionFactory (). OpenSession (executorpe.batch, false); coba {if (null! = Daftar || list.size ()> 0) {int lsize = list.size (); untuk (int i = 0, n = list.size (); i <n; i ++ list.get (i); user.setIndate ((string) parammap.get ("indate")); user.setDataDate ((string) parammap.get ("dataDate")); // atribusi data waktu // session.insert ("com.xx.mapper.usermapper.insert", user); // session.update ("com.xx.mapper.usermapper.updatebyprimarykeyselective", _ entity); sesion. Kirim setiap 1000, session.Commit () tidak dapat digulung kembali setelah komit; // bersihkan cache untuk mencegah overflow session.clearcache ();}}}} catch (pengecualian e) {// tidak ada data yang dikirimkan dapat digulirkan kembali sesi.Di atas adalah dua cara penyisipan batch di mybatis yang diperkenalkan kepada Anda oleh editor (penyisipan yang efisien). Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!