Spring:完全通过程序控制Spring事务
2016-04-21 10:02
429 查看
@Repository public class SchemaRepository { public SchemaRepository() { } public void createData1(DataSource dataSource) throws SQLException { JdbcOperations jdbcOp = new JdbcTemplate(dataSource); String sql = "INSERT INTO `t1` (`t1_id`, `name`) VALUES (1, 't1name1')"; PreparedStatementCreatorFactory statementCreatorFactory = new PreparedStatementCreatorFactory(sql); statementCreatorFactory.setReturnGeneratedKeys(true); PreparedStatementCreator creator = statementCreatorFactory.newPreparedStatementCreator(new Object[] {}); GeneratedKeyHolder keyHolder = new GeneratedKeyHolder(); jdbcOp.update(creator, keyHolder); } public void createData2(DataSource dataSource) throws SQLException { JdbcOperations jdbcOp = new JdbcTemplate(dataSource); String sql = "INSERT INTO `t1` (`t1_id`, `name`) VALUES (1, 't1name2')"; PreparedStatementCreatorFactory statementCreatorFactory = new PreparedStatementCreatorFactory(sql); statementCreatorFactory.setReturnGeneratedKeys(true); PreparedStatementCreator creator = statementCreatorFactory.newPreparedStatementCreator(new Object[] {}); GeneratedKeyHolder keyHolder = new GeneratedKeyHolder(); jdbcOp.update(creator, keyHolder); } } @Service public class SchemaService { private SchemaRepository schemaRepository; @Autowired public SchemaService(SchemaRepository schemaRepository) { this.schemaRepository = schemaRepository; } public void createData() throws SQLException { DataSource dataSource = new DriverManagerDataSource("jdbc:mysql://localhost:3306/abc", "root", "root"); DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(dataSource); TransactionDefinition def = new DefaultTransactionDefinition(); TransactionStatus status = transactionManager.getTransaction(def); try { schemaRepository.createData1(dataSource); schemaRepository.createData2(dataSource); transactionManager.commit(status); } catch (Exception e) { e.printStackTrace(); transactionManager.rollback(status); } } }
相关文章推荐
- Java倒计时实例
- myeclipse使用SVN团队开发
- Spring通过构造方法注入的四种方式
- Java 日期注解
- Android笔记之用eclipse给zxing打jar包
- Java设计模式编程中简单工厂与抽象工厂模式的使用实例
- 在eclipse中查看class源码
- Spring的事务配置
- input type="radio" 的用法
- java基础知识归纳
- java 时间
- Java集合对象排序测试
- Spring struts2 hibernate MyBatis SpringMVC 原理
- Spring4集成quartz,Maven打包为可执行jar或者war
- java取cpu、盘符和主板序列号
- struts2中的 ThreadLocal模式
- Eclipse中JSP生成的class文件去了哪里?
- java web Spring mvc 分页实现
- java获得当前方法名称
- Java8新语言特性