在 Spring Boot 中整合 MyBatis 時,處理異常可以通過以下幾種方式:
@ControllerAdvice
注解創(chuàng)建一個全局異常處理類,并使用 @ExceptionHandler
注解定義處理方法。這種方法可以統(tǒng)一處理控制器拋出的異常。@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
// 處理異常的邏輯,例如記錄日志、返回錯誤信息等
return new ResponseEntity<>("服務(wù)器內(nèi)部錯誤", 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>
在這個例子中,當查詢用戶信息時發(fā)生異常,errorMsg
和 errorCode
屬性將被設(shè)置。
@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);
}
}
}
在這個例子中,當查詢用戶信息時發(fā)生異常,我們拋出一個自定義的異常 CustomServiceException
,并在全局異常處理類中處理該異常。
通過以上方法,你可以在 Spring Boot 中整合 MyBatis 時處理異常。