java 项目中时间间隔更新解决方案[已关闭]

nfeuvbwi  于 2023-04-28  发布在  Java
关注(0)|答案(2)|浏览(103)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

6小时前关闭
这篇文章是编辑并提交审查3小时前.
Improve this question
如何在特定时间间隔后更新数据库?我使用react来设计UI,spring-boot作为服务器,MySQL作为数据库。用户可以通过预付费在停车场预订特定时间的车位。时间结束后,我想腾出那个停车场,让下一辆车停下来。我该怎么做?

public Booking BookParking(bookParkingDTO park) {
        Booking booking = new Booking();
        Optional<Parking> parking=parkRepo.findById(park.getParkingid());
        Parking parkingAfter=parking.get();
        parkingAfter.setAvail_parkings(parkingAfter.getAvail_parkings()-1);
        BeanUtils.copyProperties(park, booking);
        booking.setPayment(park.getRate() * park.getDuration());
        System.out.println(booking.toString());
        System.out.println(parking.toString());
        parkRepo.save(parkingAfter);
        bookRepo.save(booking);
        return booking;
    }

通过使用这个我预订特定持续时间(以小时为单位)的插槽,时间结束后,我想释放插槽。

kkbh8khc

kkbh8khc1#

您可以使用调度程序来实际查看预订并根据需要禁用它们。有关更多详细信息,请参阅:https://spring.io/guides/gs/scheduling-tasks
类似于:

@Scheduled(fixedRate = 60 * 1000)
public void unlockBookings() {
   // find expired bookings query
   long count = bookRepo.countByExpiredQuery();
   parking.increaseAvail_parkings(count);
   parkRepo.save(parking);
}

有关如何编写自定义查询的详细信息,请参阅:Does Spring Data JPA have any way to count entites using method name resolving?

h7wcgrx3

h7wcgrx32#

也许一种方法是使用时间戳。例如,您可以在某个特定的停车位被占用时设置时间戳,然后当您需要检查该停车位是否再次可用时,您可以检查当前时间是否大于timestampWhenTaken + durationOfBooking
另一种方式是你可以考虑以某种方式(不确定你在Springboot中是如何做到这一点的)实现cron任务--你计划在特定时间间隔执行的任务。
希望这能帮上忙。

相关问题