事务模板接入 spring的编程式事务

事务模板接入

这里接入的是spring的编程式事务,代理一下springTransactionTemplate就可以了。

 

import org.springframework.transaction.TransactionException;

import org.springframework.transaction.support.TransactionCallback;

import org.springframework.transaction.support.TransactionTemplate;

 

/**

 * 事务模板

 *

 * @author jiacheng.yjc

 * @version $Id: TranscationTemplate.java, v 0.1 20151118日 上午11:17:58 jiacheng.yjc Exp $

 */

public class TrancTemplateImpl implements TrancTemplate {

 

    private TransactionTemplate transactionTemplate;

    //这个是为了一个事务不够的时候也不用再new一个,直接用这个就行

    private TransactionTemplate transactionNewTemplate;

 

    /**

     *

     * @see com.mybank.bkloanapply.core.service.component.tx.TrancTemplate#execute(org.springframework.transaction.support.TransactionCallback)

     */

    @Override

    public <T> T execute(TransactionCallback<T> actionthrows TransactionException {

        return transactionTemplate.execute(action);

    }

 

    /**

     *

     * @see com.mybank.bkloanapply.core.service.component.tx.TrancTemplate#executeReqNew(org.springframework.transaction.support.TransactionCallback)

     */

    @Override

    public <T> T executeReqNew(TransactionCallback<T> actionthrows TransactionException {

        return transactionNewTemplate.execute(action);

    }

 

    /**

     * Setter method for property <tt>transactionTemplate</tt>.

     *

     * @param transactionTemplate value to be assigned to property transactionTemplate

     */

    public void setTransactionTemplate(TransactionTemplate transactionTemplate) {

        this.transactionTemplate = transactionTemplate;

    }

 

    /**

     * Setter method for property <tt>transactionNewTemplate</tt>.

     *

     * @param transactionNewTemplate value to be assigned to property transactionNewTemplate

     */

    public void setTransactionNewTemplate(TransactionTemplate transactionNewTemplate) {

        this.transactionNewTemplate = transactionNewTemplate;

    }

}

 

模板的接入使用

/**

     * 测试用例,插入一条日志记录

     *

     */

    @Override

    public String logTest(LogModel logModel) {

        final LogModel logModel_ = logModel;

        trancTemplate.execute(new TransactionCallback<LogModel>() {

            @Override

            public LogModel doInTransaction(TransactionStatus status) {

                logComponent.insert(logModel_);

                //do otherthings

                return logModel_;

            }

        });

        return "执行成功";

}

insert语句执行出错或者do otherthings时出错都会自动回滚,不需要手动trycatch然后status.setRollbackOnly();回滚,很方便

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://www.cnblogs.com/captainbed

猜你喜欢

转载自www.cnblogs.com/swnchx/p/10196684.html