这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。
插入SQL

1. 不添加Transactional注解抛出异常

结果可以正常插入

2. 添加Transactional注解抛出异常

结果不能插入

3. 方法不添加Transactional注解,调用该类的添加Transactional注解的方法抛出异常

结果可以正常插入

4. 方法添加Transactional注解,调用该类的不添加Transactional注解的方法抛出异常

结果不能插入

5. 方法添加Transactional注解,抛出异常并捕获

结果可以正常插入

6. 添加Transactional注解,新建数据源,抛出异常


结果可以正常插入