Mybatis不鼓励捕捉异常,但在某些特定场景下须要捕捉,这个时候经过try catch是捕捉不到的,mybatis有本身的处理方式,它把异常映射成了DataAccessException,那么咱们须要抛出异常并捕捉。java
service中抛出异常mybatis
@Transactional(readOnly=false) public int save(BaseDepartment department) throws DataAccessException{ return departmentDao.insert(department); }
controller中捕获异常并进行处理code
try { if (departmentService.save(department) > 0) { body.setReason("成功"); body.setResultFlag(1); } else { body.setReason("失败"); body.setResultFlag(801); } } catch (DataAccessException e) { body.setReason("保存失败:部门名称已存在!"); body.setResultFlag(8012); }