国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

聲明式事務

ActiveRecord 支持聲名式事務,聲明式事務需要使用 ActiveRecordPlugin 提供的攔截器來 實現(xiàn),攔截器的配置方法見 Interceptor 有關章節(jié)。以下代碼是聲明式事務示例:

// 本例僅為示例, 并未嚴格考慮賬戶狀態(tài)等業(yè)務邏輯
@Before(Tx.class)
public void trans_demo() {
// 獲取轉賬金額
Integer transAmount = getParaToInt("transAmount");
// 獲取轉出賬戶id
Integer fromAccountId = getParaToInt("fromAccountId");
// 獲取轉入賬戶id
Integer toAccountId = getParaToInt("toAccountId");
// 轉出操作
Db.update("update account set cash = cash - ? where id = ?", transAmount, fromAccountId);
// 轉入操作
Db.update("update account set cash = cash + ? where id = ?", transAmount, toAccountId);
}

以上代碼中,僅聲明了一個 Tx 攔截器即為 action 添加了事務支持。除此之外 ActiveRecord 還配備了 TxByActionKeys、TxByActionKeyRegex、TxByMethods、TxByMethodRegex,分別 支持 actionKeys、actionKey 正則、actionMethods、actionMethod 正則聲明式事務,以下是示例代碼:

public void configInterceptor(Interceptors me) { me.add(new TxByMethodRegex("(.*save.*|.*update.*)")); me.add(new TxByMethods("save", "update"));
 
me.add(new TxByActionKeyRegex("/trans.*")); me.add(new TxByActionKeys("/tx/save", "/tx/update"));



上例中的 TxByRegex 攔截器可通過傳入正則表達式對 action 進行攔截,當 actionKey 被正 則匹配上將開啟事務。TxByActionKeys 可以對指定的 actionKey 進行攔截并開啟事務, TxByMethods 可以對指定的 method 進行攔截并開啟事務。

注意MySql 數(shù)據(jù)庫表必須設置為 InnoDB 引擎時才支持事務,MyISAM 并不支持事務。