Spring Boot 在特定时间更新数据[已关闭]

qoefvg9y  于 2023-04-30  发布在  Spring
关注(0)|答案(2)|浏览(104)

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

2天前关闭。
此帖子已于2天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
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;
    }

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

e0uiprwp

e0uiprwp1#

您可以使用调度程序来实际查看预订并根据需要禁用它们。有关更多详细信息,请参阅: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?

pvabu6sv

pvabu6sv2#

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

相关问题