搭建最简单的SpringBoot项目_Steven-Russell的博客-CSDN博客
org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java 8.0.33 org.projectlombok lombok 1.18.28 provided
@Data @Entity @Table(name = "tbl_user") public class User { @Id @Column @GeneratedValue private int id; @Column private String name; @Column private String addr; @UpdateTimestamp @Column private Date updateTime; }
public interface UserRepository extends CrudRepository{ @Transactional @Modifying int deleteAllByNameIn(@Param(value = "nameList") List nameList); }
注意:需要注入 PlatformTransactionManager
@GetMapping(value = "transactional") public String transactionalUser() { DefaultTransactionDefinition transDefinition = new DefaultTransactionDefinition(); transDefinition.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW); TransactionStatus transStatus = transactionManager.getTransaction(transDefinition); try { deleteUser4Transactional(); addUser4Transactional(); transactionManager.commit(transStatus); } catch (Exception e) { e.printStackTrace(); transactionManager.rollback(transStatus); } return "success"; } private void addUser4Transactional() { int i = 1; int ans = i/0; User user = new User(); user.setName("addUser4TransactionalName"); user.setAddr("chongqing"); userRepository.save(user); } private void deleteUser4Transactional() { ListnameList = new ArrayList (){{ add("aaa"); add("ccc"); }}; int ans = userRepository.deleteAllByNameIn(nameList); System.out.println("deleteUser4Transactional ans : " + ans); }
如下所示,数据没有变化
发现数据已经被删除,但是异常之后的添加操作并没有生效提交