Transaksi pengisytiharan
ActiveRecord menyokong urus niaga pengisytiharan perlu dilaksanakan menggunakan pemintas yang disediakan oleh ActiveRecordPlugin Untuk kaedah konfigurasi pemintas, lihat bab Pemintas yang berkaitan. Kod berikut ialah contoh transaksi deklaratif:
@Before(Tx.class)
public void trans_demo() {
/ / Dapatkan amaun pindahan
Integer transAmount = getParaToInt("transAmount");
// Dapatkan id akaun pindahan
Integer fromAccountId = getParaToInt("fromAccountId");
// Dapatkan id akaun pindahan
Integer toAccountId(" getParaToInt("fromAccountId"); toAccountId");
/ / Operasi pemindahan
Db.update("kemas kini set akaun tunai = tunai - ? where id = ?", transAmount, fromAccountId);
// Operasi pemindahan
Db.update("kemas kini set akaun tunai = tunai + ? where id = ?", transAmount, toAccountId);
}
Dalam kod di atas, hanya satu pemintas Tx diisytiharkan untuk menambah sokongan transaksi kepada tindakan. Selain itu, ActiveRecord juga dilengkapi dengan TxByActionKeys, TxByActionKeyRegex, TxByMethods, dan TxByMethodRegex, masing-masing menyokong actionKeys, actionKey regular, actionMethods dan actionMethod urus niaga perisytiharan biasa Berikut ialah kod contoh:
. konfigurasi kekosongan awamInter ceptor(Pemintas saya) { saya.tambah(TxByMethodRegex baharu("(.*simpan.*|.*kemas kini.*)")); saya.tambah(TxByMethods baharu("simpan", "kemas kini"));
me.add (TxByActionKeyRegex baharu("/trans.*")); me.add(TxByActionKeys baharu("/tx/save", "/tx/update"));
Contoh di atas Pemintas TxByRegex dalam boleh memintas tindakan dengan menghantar dalam ungkapan biasa Apabila actionKey dipadankan dengan ungkapan biasa, transaksi akan dimulakan. TxByActionKeys boleh memintas actionKey yang ditentukan dan memulakan transaksi, dan TxByMethods boleh memintas kaedah yang ditentukan dan memulakan transaksi.
Nota: Jadual pangkalan data MySql mesti ditetapkan kepada enjin InnoDB untuk menyokong urus niaga MyISAM tidak menyokong transaksi.