//启动类上 @MapperScan(basePackages = "com.xx.mapper.*") @SpringBootApplication @EnableScheduling @EnableTransactionManagement //注解生效就加 public class SysWebApplication extends SpringBootServletInitializer //常用的CRUD ------------------------- 添加修改删除 ----------------------------- @RequestMapping(value = "/save", method = RequestMethod.POST ) @Log("查看系统日志列表") @Transactional(propagation = Propagation.REQUIRED) public ResultBean save(){ demoMapper.insert(new Demo(11L,"1")); demoMapper.insert(new Demo(12L,"1")); demoMapper.insert(new Demo(13L,"1")); return ResultBean.ok(); } ------------------------- 查询 ----------------------------- @Transactional(propagation = Propagation.SUPPORTS) @RequestMapping(value = "/list", method = RequestMethod.GET ) @Log("查看系统日志列表") public ResultBean get(HttpServletRequest request, HttpServletResponse response) throws IOException { List all = demoService.seleDemo(); try{ return ResultBean.ok(all); }catch (Exception e){ e.printStackTrace(); } return null; } 传播行为 所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。 我们可以看 org.springframework.transaction.annotation.Propagation 枚举类中定义了6个表示传播行为的枚举值: public enum Propagation { REQUIRED(0), SUPPORTS(1), MANDATORY(2), REQUIRES_NEW(3), NOT_SUPPORTED(4), NEVER(5), NESTED(6); } REQUIRED :如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 SUPPORTS :如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。 MANDATORY :如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。 REQUIRES_NEW :创建一个新的事务,如果当前存在事务,则把当前事务挂起。 NOT_SUPPORTED :以非事务方式运行,如果当前存在事务,则把当前事务挂起。 NEVER :以非事务方式运行,如果当前存在事务,则抛出异常。 NESTED :如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 REQUIRED 。 指定方法:通过使用 propagation 属性设置,例如: @Transactional(propagation = Propagation.REQUIRED)