zoukankan      html  css  js  c++  java
  • 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)

      注:我试了很多次都不管用,最终发现没有设置拦截器。文档中写的比较清楚。

      还有我觉得文档真心的整理的不够,不过实现基础的功能还是可以的。

  • 相关阅读:
    【转】java对File.listFiles()排序
    java 获取当前目录文件名
    python批量创建文件夹
    [好课推荐]数据结构与算法python实现
    SCI论文重复率与降重
    [转]一图搞定Matplotlib
    [GitHub寻宝]机器学习实战python3代码分享
    [好课推荐]人工智能实践:Tensorflow2.0
    [转]用深度学习给黑白照片上色
    java split函数分割字符串
  • 原文地址:https://www.cnblogs.com/jinTaylor/p/4551919.html
Copyright © 2011-2022 走看看