在 Spring Boot 中整合 MyBatis 时,处理异常可以通过以下几种方式:
@ControllerAdvice
注解创建一个全局异常处理类,并使用 @ExceptionHandler
注解定义处理方法。这种方法可以统一处理控制器抛出的异常。@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
// 处理异常的逻辑,例如记录日志、返回错误信息等
return new ResponseEntity<>("服务器内部错误", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
<select>
、<insert>
、<update>
和 <delete>
标签的 resultMap
属性定义错误处理。例如:<resultMap id="BaseResultMap" type="com.example.entity.User">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="email" column="email"/>
<error property="errorMsg" column="error_msg" javaType="java.lang.String" jdbcType="VARCHAR"/>
<error property="errorCode" column="error_code" javaType="java.lang.Integer" jdbcType="INTEGER"/>
</resultMap>
<select id="getUserById" resultMap="BaseResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
在这个例子中,当查询用户信息时发生异常,errorMsg
和 errorCode
属性将被设置。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserById(int id) {
try {
return userMapper.getUserById(id);
} catch (Exception e) {
// 处理异常的逻辑,例如记录日志、返回错误信息等
throw new CustomServiceException("获取用户信息失败", e);
}
}
}
在这个例子中,当查询用户信息时发生异常,我们抛出一个自定义的异常 CustomServiceException
,并在全局异常处理类中处理该异常。
通过以上方法,你可以在 Spring Boot 中整合 MyBatis 时处理异常。