Spring学习笔记-05. Spring事务的使用

付威     2019-11-26   1342   3min  

配置HikariDataSource测试环境

@Configuration
public class RzConfig {
	@Bean
	public DataSource dataSource() {
          //此处也可以写到配置文件中
		final HikariConfig cpConfig = new HikariConfig();
		cpConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
		cpConfig.setJdbcUrl("jdbc:mysql://localhost:3306/rzframe?characterEncoding=utf8&useSSL=true&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC");
		cpConfig.setUsername("root");
		cpConfig.setPassword("abc12345");
		cpConfig.setMaximumPoolSize(10);
		HikariDataSource hikariDataSource = new HikariDataSource(cpConfig);
		return hikariDataSource;
	}
	@Bean
	public JdbcTemplate jdbcTemplate(){
		return new JdbcTemplate(dataSource());
	}
}

编写事务代码和执行

  1. @Configuration增加@EnableTransactionManagement注解

  2. 注册PlatformTransactionManager

	@Bean
	public PlatformTransactionManager platformTransactionManager(){
		return new DataSourceTransactionManager(dataSource());
	}
	
  1. 写一个Service主动抛出异常

@Service
public class MenuService {
	@Autowired
	JdbcTemplate jdbcTemplate;
	
	@Transactional
	public void insertMenu() throws Exception {
		String sql = "insert into `rz_menu` (`menu_name`, `menu_src`, `menu_icon`, `menu_status`, `parentmenu_id`, `create_time`, `dataChange_lastTime`) values('test','/','fa-desktop','0','0',now(),now());";
		jdbcTemplate.execute(sql);
		int i = 1 / 0;
		
	}
}

执行Service 程序运行报错,数据也无法正常的插入。

(本文完)

作者:付威

博客地址:http://blog.laofu.online

如果觉得对您有帮助,可以下方的RSS订阅,谢谢合作

如有任何知识产权、版权问题或理论错误,还请指正。

本文是付威的网络博客原创,自由转载-非商用-非衍生-保持署名,请遵循:创意共享3.0许可证

交流请加群113249828: 点击加群   或发我邮件 laofu_online@163.com

付威

获得最新的博主文章,请关注上方公众号