1. 程式人生 > >事務模板接入 spring的程式設計式事務

事務模板接入 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