springboot編程序事務TransactionTemplate如何使用
TransactionTemplate的使用
總結:在類別中註入TransactionTemplate,即可在springboot中使用編程式事務。
spring支援編程式事務管理和宣告式交易管理兩種方式。
編程式事務管理使用TransactionTemplate或直接使用底層的PlatformTransactionManager。 Spring建議使用TransactionTemplate來管理程式設計事務。
宣告式事務管理是建立在AOP之上的。其本質是對方法前後進行攔截,然後在目標方法開始之前建立或加入一個事務,在執行完目標方法之後根據執行情況提交或回溯事務。 Spring Boot推薦使用@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如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Springboot+Mybatis-plus不使用SQL語句進行多表新增怎麼實現
