事务API实现demo
生活随笔
收集整理的這篇文章主要介紹了
事务API实现demo
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
????????業(yè)務(wù)開(kāi)發(fā)中我們常常使用申明是事務(wù),那么申明式事務(wù)到底是如何運(yùn)作的呢,這就像一個(gè)黑盒,我們可以參考編程式事務(wù)的方式來(lái)了解其具體實(shí)現(xiàn)。
只有一個(gè)事務(wù)操作
public static DataSource getDs() {DruidDataSource ds = new DruidDataSource();ds.setUsername("root");ds.setPassword("root");ds.setUrl("jdbc:mysql://192.168.127.147:3306?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false");ds.setDriverClassName("com.mysql.jdbc.Driver");return ds; } private static void txDemo01() throws SQLException {DataSource ds = getDs();DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(ds);// 創(chuàng)建事務(wù)定義信息DefaultTransactionDefinition transactionDefinition = new DefaultTransactionDefinition();// 開(kāi)啟事務(wù)TransactionStatus transactionStatus = transactionManager.getTransaction(transactionDefinition);// 獲取物理連接Connection connection = DataSourceUtils.getConnection(ds);// 執(zhí)行業(yè)務(wù)PreparedStatement ps = connection.prepareStatement("select * from ds0.test limit 1");ps.execute();ResultSet resultSet = ps.getResultSet();while (resultSet.next()) {long id = resultSet.getLong("id");String userName = resultSet.getString("user_name");System.out.printf("id = %d, userName = %s\n", id, userName);}// 提交事務(wù)transactionManager.commit(transactionStatus); }包含多個(gè)事務(wù)操作
public static DataSource getDs() {DruidDataSource ds = new DruidDataSource();ds.setUsername("root");ds.setPassword("root");ds.setUrl("jdbc:mysql://192.168.127.147:3306?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false");ds.setDriverClassName("com.mysql.jdbc.Driver");return ds; }public static void main(String[] args) throws SQLException {// txDemo01();DataSource ds = getDs();DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(ds);// 創(chuàng)建事務(wù)定義信息DefaultTransactionDefinition transactionDefinition = new DefaultTransactionDefinition();transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);// 開(kāi)啟事務(wù)TransactionStatus transactionStatus = transactionManager.getTransaction(transactionDefinition);//JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);jdbcTemplate.execute("insert into ds0.user(user_name,age) values('jack3',32)");// 新建連接事務(wù)DefaultTransactionDefinition definition2 = new DefaultTransactionDefinition();definition2.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);TransactionStatus transactionStatus2 = transactionManager.getTransaction(definition2);JdbcTemplate jdbcTemplate2 = new JdbcTemplate(ds);jdbcTemplate2.execute("insert into ds0.grade(user_id,grade) values(2,79)");// 回滾事務(wù)2transactionManager.rollback(transactionStatus2);// 提交事務(wù)1transactionManager.commit(transactionStatus); }總結(jié)
以上是生活随笔為你收集整理的事务API实现demo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 岩溶洞穴多源点云数据的获取及融合方法
- 下一篇: 丑拒!如何在Python中编写精美图形界