91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot編程式事務TransactionTemplate如何使用

發布時間:2022-06-14 13:52:14 來源:億速云 閱讀:1592 作者:iii 欄目:開發技術

本篇內容主要講解“springboot編程式事務TransactionTemplate如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“springboot編程式事務TransactionTemplate如何使用”吧!

TransactionTemplate的使用

總結:在類中注入TransactionTemplate,即可在springboot中使用編程式事務。

spring支持編程式事務管理和聲明式事務管理兩種方式。

編程式事務管理使用TransactionTemplate或者直接使用底層的PlatformTransactionManager。對于編程式事務管理,spring推薦使用TransactionTemplate。

聲明式事務管理建立在AOP之上的。其本質是對方法前后進行攔截,然后在目標方法開始之前創建或者加入一個事務,在執行完目標方法之后根據執行情況提交或者回滾事務。對于聲明式事務管理,springboot中推薦使用@Transactional注解。

1.為何用?

多數情況下,方法上聲明@Transactional注解聲明事務即可,簡單、快捷、方便,但@Transactional聲明式事務的可控性太弱了,只可在方法或類上聲明,做不到細粒度的事務控制。

如果一個方法前10條sql都是select查詢語句,只有最后2條sql是update語句,那么只對最后2條sql做事務即可。

2.如何用

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

springboot中引入mybatis-spring-boot-starter依賴包即可。

mybatis-spring-boot-starter依賴包中包含了spring-boot-starter-jdbc的依賴,spring-boot-starter-jdbc中包含DataSourceTransactionManager事務管理器以及自動注入配置類DataSourceTransactionManagerAutoConfiguration。

代碼中使用,在使用bean中注入TransactionTemplate即可:

@Service
public class TestServiceImpl {
    @Resource
    private TransactionTemplate transactionTemplate;
 
    public Object testTransaction() {
        //數據庫查詢
        dao.select(1);
        return transactionTemplate.execute(status -> {
            //數據庫新增
            dao.insert(2);
            dao.insert(3);
            return new Object();
        });
    }
}

TransactionTemplate簡單使用

/**
 * 事務模板
 * @author zz
 *
 */ 
public class TransactionTemplateSupport {
 
	@Autowired
	private PlatformTransactionManager transactionManager;	
	private TransactionTemplate requiredTransactionTemplate;	
	protected TransactionTemplate getRequiresNewTransactionTemplate(){
		if (requiredTransactionTemplate == null){
			requiredTransactionTemplate = new TransactionTemplate(transactionManager);
			requiredTransactionTemplate.setPropagationBehavior(TransactionTemplate.PROPAGATION_REQUIRED);
		//	requiredTransactionTemplate.setReadOnly(true);
		//	requiredTransactionTemplate.setTimeout(30000);
		}
		
		return requiredTransactionTemplate;
	} 
}
 @Service
public class TestTransaction extends TransactionTemplateSupport  { 
    @Autowired
    private JdbcTemplate jdbcTemplate ;
 
    @Autowired
    private TransactionTemplate transactionTemplate;
 
   // @Transactional
    public void test(){
 
        jdbcTemplate.execute("insert into user value (1,'aaa','aaa','aaa')"); 
        int i = 1/0; 
        jdbcTemplate.execute("insert into user value (2,'aaa','aaa','aaa')"); 
    } 
 
    public void test2(){ 
      getRequiresNewTransactionTemplate()
      //  transactionTemplate
                .execute(new TransactionCallback<Void>() {
 
            @Override
            public Void doInTransaction(TransactionStatus status) {  
                jdbcTemplate.execute("insert into user value (11,'BBBB','aaa','aaa')");
 
                int i = 1/0; 
                jdbcTemplate.execute("insert into user value (21,'aaa','NNNN','aaa')");  
                return null;
            }
        });
    }  
}

到此,相信大家對“springboot編程式事務TransactionTemplate如何使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太保市| 盐津县| 禄劝| 南漳县| 和硕县| 乾安县| 桐城市| 滨海县| 南安市| 宝鸡市| 建瓯市| 扶绥县| 杭锦旗| 大渡口区| 万年县| 馆陶县| 玉环县| 理塘县| 甘孜| 襄垣县| 辉南县| 五大连池市| 铜梁县| 营山县| 道孚县| 利川市| 安徽省| 黄浦区| 罗城| 河池市| 墨玉县| 峨边| 澜沧| 长沙县| 满城县| 刚察县| 南郑县| 偃师市| 科尔| 万山特区| 桐乡市|