如何根据服务器时间操作mySQL中的参数

时间:2018-04-07 15:37:20

标签: java mysql hibernate spring-mvc

我已经构建了一个RESTful服务器,其中包含一个带有Spring / hibernate / mySQL的数据库。

我有一张银行储蓄账户表,有3个储蓄余额列。

例如:

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

我想每天(或每月),每个储蓄账户将根据服务器/当前时间自动增加0.01%(或其他金额)。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

编写一个暂停一段时间的方法,而不是调用

方法
  1. 通过SQL
  2. 加载字段的当前值
  3. 通过计算字段值value = value+(value*0.01)来增加字段的值,然后使用SQL更新值。
  4. 对于Java中的暂停,请使用TimeUnit.MINUTES.sleep(2); java.util.concurrent.TimeUnit 2 2 Minutes代表TimeUnit.DAYS.sleep(1);。您还可以使用DAYS / HOURS pow(2,n)

答案 1 :(得分: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)));
    });
}

}