service层调用其他方法时,在任一方法内抛出异常,即全部回滚,@Transactional只需加在入口方法上。
如下:
@Override
@Transactional(rollbackFor = Exception.class)
public void testTransactional() {
Map<String,Object> map = new HashMap<>(16);
map.put("name","xxx");
prdPickmtrlMapper.testTransactional(map);
testTransactionalB();
if (true){
throw new MyException(300,"回滚");
}
}
private void testTransactionalB(){
Map<String,Object> map = new HashMap<>(16);
map.put("name","yyy");
prdPickmtrlMapper.testTransactional(map);
}
或
@Override
@Transactional(rollbackFor = Exception.class)
public void testTransactional() {
Map<String,Object> map = new HashMap<>(16);
map.put("name","xxx");
prdPickmtrlMapper.testTransactional(map);
testTransactionalB();
}
private void testTransactionalB(){
Map<String,Object> map = new HashMap<>(16);
map.put("name","yyy");
prdPickmtrlMapper.testTransactional(map);
if (true){
throw new MyException(300,"回滚");
}
}