Latar Belakang: Untuk catatan yang sama dalam database, jika dua orang memodifikasi data pada saat yang sama dan akhirnya menyinkronkannya ke database, hasilnya tidak dapat diprediksi karena konkurensi. Solusi termudah adalah menambahkan bidang versi ke catatan dalam tabel. Saat memodifikasi catatan, Anda perlu membandingkan apakah versi cocok. Jika cocok, itu akan diperbarui, dan jika tidak cocok, itu akan gagal secara langsung. Jika pembaruan berhasil, Versi+1 diatur, yang merupakan kunci optimis. Tentu saja, logika semacam itu adalah yang terbaik untuk menjadi transparan bagi pengembang, dan plug-in ini ada di sini untuk melakukan ini.
1. Metode Penggunaan: Tambahkan konfigurasi berikut ke file konfigurasi mybatis dan selesai.
<Plugin> <plugin interceptor = "com.chrhc.mybatis.locker.interceptor.optimisticlocker"/> </lugin>
2. Deskripsi konfigurasi plug-in:
Atribut Java yang sesuai dengan kolom kunci optimis dari konfigurasi database default untuk versi plug-in adalah versi. Di sini Anda dapat menyesuaikan kehidupan atribut, misalnya:
<Plugins> <plugin Interceptor = "com.chrhc.mybatis.locker.interceptor.optimisticlocker"> <properti nama = "versioncolumn" value = "xxx"/> <!-nama kolom dari database-> <nama properti = "versionfield" value = "xxx"
3. Efek:
Sebelumnya: Perbarui Nama Set Pengguna = ?, Kata Sandi =? dimana id =?
Setelah: Perbarui nama pengguna set =?, Kata sandi = ?, Versi = Versi+1 di mana id =? dan versi =?
4. Deskripsi Nilai Versi:
1. Saat disiapkan persiapan mendapatkan nilai versi, plug-in akan secara otomatis meningkat sebesar 1.
2. Seluruh proses kontrol kunci optimis transparan untuk pengguna, yang sangat mirip dengan kunci optimis Hibernate, dan pengguna tidak perlu peduli dengan nilai kunci optimis.
5. Deskripsi Prinsip Plug-In:
Plug-in mencegat pernyataan pembaruan yang dijalankan oleh MyBatis dan menambahkan tanda kunci optimis pada pernyataan SQL asli. Misalnya, SQL asli adalah:
Perbarui nama pengguna set =?, kata sandi =? dimana id =?,
Maka pengguna tidak perlu memodifikasi pernyataan SQL. Dengan bantuan plug-in, pernyataan SQL di atas akan ditulis ulang secara otomatis sebagai:
Perbarui Nama Set Pengguna = ?, Kata Sandi = ?, Versi = Versi + 1 Di mana id =? dan versi =?,
Formulir, pengguna tidak perlu peduli dengan nilai sebelum dan sesudah versi. Semua tindakan transparan untuk pengguna, dan plug-in melengkapi fungsi-fungsi ini sendiri.
6. Konvensi default:
1. Pernyataan pernyataan pembaruan yang dicegat oleh plug-in ini semuanya disiapkan, yang hanya berlaku untuk SQL dengan cara ini;
2.
3. Plug-in ini tidak akan melakukan apa pun pada hasil SQL, dan apa yang harus dikembalikan SQL sendiri adalah apa;
4. Plug-in mencegat semua pernyataan pembaruan secara default. Jika pengguna tidak menginginkan kontrol kunci optimis untuk pembaruan tertentu, maka tambahkan @VersionLocker (false) atau @VersionLocker (value = false) ke metode antarmuka mapper yang sesuai, sehingga plug-in tidak akan melakukan apa pun pada pembaruan ini, yang setara dengan tidak memiliki plug-in ini;
5. Plug-in ini saat ini tidak mendukung kunci optimis untuk pembaruan batch untuk saat ini. Alasannya adalah bahwa pembaruan batch tidak memiliki banyak skenario aplikasi dalam pengembangan aktual, dan sulit untuk mengembangkan kunci optimis untuk pembaruan batch;
6. Jenis parameter antarmuka mapper harus konsisten dengan tipe aktual yang diteruskan. Ini karena dalam versi JDK, tidak ada metode di bawah JDK8 untuk mendapatkan nama daftar parameter antarmuka. Oleh karena itu, plug-in menggunakan jenis parameter dan parameter sebagai pemetaan untuk mencocokkan tanda tangan metode;
Alamat GitHub: https://github.com/xjs1919/locker
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.