SELECT * FROM table_name WHERE id = #{id} FOR UPDATE

SELECT * FROM products WHERE product_id = 1001 FOR UPDATE
@Transactional public PurchaseResult purchaseCourse(Long userId, Long courseId) {

// 锁定课程记录
Course course = courseMapper.selectCourseForUpdate(courseId);
if (course.getRemainingSeats() > 0) {
course.setRemainingSeats(course.getRemainingSeats() - 1);
courseMapper.updateCourse(course);
Order order = createOrder(userId, courseId);
orderMapper.insertOrder(order);
return PurchaseResult.success(order);
}
return PurchaseResult.failed("课程已售罄");
}
@Transactional(timeout = 5) // 设置5秒超时 public boolean reserveTeacherTime(Long teacherId, LocalDateTime timeSlot) {
// 锁定教师时间段记录
TimeSlot slot = timeSlotMapper.selectForUpdate(teacherId, timeSlot);
if (slot.getStatus() == TimeSlotStatus.AVAILABLE) {
slot.setStatus(TimeSlotStatus.RESERVED);
timeSlotMapper.update(slot);
return true;
}
return false;
}