关于SpringBoot自带的定时器Scheduled的使用

最近项目中有一个活动模块的功能其中有活动的状态。要根据状态来查出,未开始的活动和已结束的活动。其中活动状态要根据活动结束的时间自动修改。然后研究了一下SpringBoot自带的定时器Scheduled。废话不多说,上代码。
1、Mapper层:
关于SpringBoot自带的定时器Scheduled的使用
2、Sql语句
关于SpringBoot自带的定时器Scheduled的使用
关于SpringBoot自带的定时器Scheduled的使用
这里说一下sql语句的RIGHT函数,这个是把某个字段的值从右往左截取字符串;例如SELECT RIGHT(‘foobarbar’, 4) 结果:rbar
3、实现层(跳过service)
关于SpringBoot自带的定时器Scheduled的使用
这里才是核心
//sdf.parse(sdf.format(nowTime))格式化当前字符串(String)转换成DATE
//sdf.parse(mu.getActivityTime())数据库时间转换成DATE
关于@Scheduled注解大家可以自行百度。
cron是表达式,在里面设定时间。这里有一个在线生成cron表达式的网址》》http://cron.qqe2.com/
今天在倒腾日期对比的时候,本来没用after。因为我把取出来的日期和获取系统时间的日期都弄成字符串用equals做得对比。发现如果4月2号结束活动,我把系统时间设置为4月3号的话,它不会修改时间。后来又把他们两个全都换成了Date类型做对比,Date对比有两种:
Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;
Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等于时,返回false;
4、最重要的一步就是在你的启动类里面加上@EnableScheduling注解
关于SpringBoot自带的定时器Scheduled的使用
到这里差不多就可以实现从数据库中获取时间拿当前时间作对比,修改状态啦。。。这里面我设置的是5分钟请求一次数据库,数据库压力有点大。没有考虑优化之类的,代码写的不好还请见谅。我还是个刚入行的小白。。还需要不断学习。希望对大家有所帮助。