Как манипулировать параметром в MySQL по времени сервера

0

Я создал сервер RESTful с базой данных с Spring/hibernate/mySQL.

У меня есть таблица банковского сберегательного счета, в которой есть 3 столбца баланса баланса.

например:

account_id | a_savings | b_savings | c_savings  
1          | 100       | 200       | 300  

я хочу, чтобы каждый день (или месяц) каждый сберегательный счет добавлял 0,01% (или другую сумму) к его значению автоматически в соответствии с сервером/текущим временем.

как мне это сделать?

Теги:
spring-mvc
hibernate

2 ответа

0
Лучший ответ

Решил задачу планирования:

@Component
public class ScheduledTasks {

private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

@Autowired
private SavingsAccountDao savingsAccountDao;

/* each day at 8 am */
@Scheduled(cron = "0 0 8 * * *")
public void increaseSavingsAccount() {
    log.info("Savings Accounts Updated", dateFormat.format(new Date()));

    /* get all savings accounts and increase balance according to the interest */
    List<SavingsAccount> savingsAccountList = savingsAccountDao.findAll();
    savingsAccountList.forEach((sa) -> {

        /* 39% interest in 12 months */
        sa.setASavingsBalance(sa.getASavingsBalance().multiply(new BigDecimal(1.0009)));
    });
}

}

1

Напишите метод, который приостанавливается на некоторое время, чем вызов метода, который

  1. загрузить текущее значение поля с помощью SQL
  2. увеличьте значения поля, вычислив его значение, value = value+(value*0.01) затем используйте SQL для обновления значения.

Для паузы в java используйте TimeUnit.MINUTES.sleep(2); of java.util.concurrent.TimeUnit здесь 2 означает 2 Minutes. Вы также можете использовать DAYS/HOURS TimeUnit.DAYS.sleep(1);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню