歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> JFinal 基本應用 --事務回滾

JFinal 基本應用 --事務回滾

日期:2017/3/1 9:11:58   编辑:Linux編程

JFinal事務回滾

1.當時需要用到事務回滾,但是看到網上只有問題,沒有真實的到底怎麼用法。

2.我看了一下文檔,結合了網上的大神的博客。

第一種方法:

Db.tx(new IAtom(){

  @Override

  public boolean run() throw SQLException{

  //在這裡寫要執行的操作,在執行的過程中如果有異常將回滾,如果return false 就也回滾

  return true;

  }

});

我的代碼:

public static void clearScores() {
// TODO Auto-generated method stub
Db.tx(new IAtom() {
//在執行run的過程中,如果有異常將回滾,或者return false 將回滾
@Override
public boolean run() throws SQLException {
//獲取所有的到期用戶
List<Associator> assocs = Associator.dao.getAssocsOfScoresExpire();
for( int i = 0 ; i < assocs.size() ; i ++ ){
Associator assoc = assocs.get(i);
//在積分明細中寫入記錄存入
Map map = new HashMap();
map.put("ASSOC_ID",assoc.get(Associator.COLLUMNS.ASSOC_ID));
map.put("CREATED_BY","AUTO");
map.put("DEAL_TYPE","扣除");
map.put("ASSOC_SCORE",assoc.get(Associator.COLLUMNS.ASSOC_SCORE));
map.put("DEAL_REASON","積分到期");
AssociatorScore.dao.saveScore(map);
//修改對應的積分和會員的最近簽到時間
assoc.set(Associator.COLLUMNS.ASSOC_SCORE, 0);
assoc.set(Associator.COLLUMNS.FIRST_SIGN_TIME, Calendar.getInstance().getTime());
assoc.set(Associator.COLLUMNS.MODIFIED_AT, Calendar.getInstance().getTime());
//測試能否回滾
/*if( i == 1)
assoc.remove("ID");*/
assoc.update();
}
return true;
}
});
}
}

  還有一種方式:

  聲明事務方式:在方法前聲明@Before(Tx.class)

  注:我試了很多次都不管用,最終發現沒有設置攔截器。文檔中寫的比較清楚。

  還有我覺得文檔真心的整理的不夠,不過實現基礎的功能還是可以的。

Jfinal學習之路---Controller使用 http://www.linuxidc.com/Linux/2014-07/104323.htm

JFinal開發8個常見問題 http://www.linuxidc.com/Linux/2015-02/113421.htm

JFinal的詳細介紹:請點這裡
JFinal的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved