先抛问题
看以下示例1
@Service
public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> implements TeacherService {
@Resource
TeacherMapper teacherMapper;
@Override
@Transactional
public void insertTeacher() {
teacherMapper.insert(new Teacher(1L,"张三"));
throw new RuntimeException("抛异常测试");
}
@Override
public void method(){
insertTeacher();
}
}
@SpringBootTest
class TeacherServiceImplTest {
@Resource
TeacherService teacherService;
@Test
void method() {
teacherService.method();
}
}
是否会插入?
会插入,因为 method()方法没有事务注解,导致 insertTeacher方法事务不生效
###示例2
@Service
public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> implements TeacherService {
@Resource
TeacherMapper teacherMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void insertTeacher() {
teacherMapper.insert(new Teacher(1L,"张三"));
throw new RuntimeException("抛异常测试");
}
@Override
@Transactional(rollbackFor = Exception.class)
public void method(){
teacherMapper.insert(new Teacher(2L,"李四"));
try {
insertTeacher();
}catch (Exception e){
e.printStackTrace();
}
}
}
@SpringBootTest
class TeacherServiceImplTest {
@Resource
TeacherService teacherService;
@Resource
StudentService studentService;
@Test
void method() {
teacherService.method();
}
}
是否会回滚?
两者都插入