Mybatis中捕获不到了MySQLIntegrityConstraintViolationException

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);
		}
相关文章
相关标签/搜索