为什么要使用定时器?
解决项目中需要在特定的时间点中进行某些任务
废话不多说,下面给出最简单的实现方法:
- 先导入依赖
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
- 依赖导入后,先去配置一下springMVC的配置文件
<!--约束-->
<beans xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd">
<!--定时器-->
<bean id="beanid" class="quatz.Quatz"/>
<task:scheduled-tasks>
<task:scheduled ref="beanid" method="updateInfo" cron="*/5 * * * * ?"/>
<!--<task:scheduled ref="beanid" method="execute" cron="0 2 19 7 10 ? "/>-->
<!--可配置多个方法-->
</task:scheduled-tasks>
- 编写映射文件
public interface SignMapper {
void autoUpdate();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="mapper.SignMapper" >
<update id="autoUpdate">
UPDATE sign set isvaild = '0' WHERE (NOW() < sign.start or NOW() > sign.end) and sign.isvaild = '1'
</update>
</mapper>
- 编写任务类
package quatz;
import mapper.SignMapper;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @ Author :cy
* @ Date :22:04 2020/6/4
*/
public class Quatz {
@Autowired
private SignMapper signMapper;
public void updateInfo() {
System.out.println("定时任务执行!");
signMapper.autoUpdate();
}
}
到这里,一个简单的定时器就写完了,你可能会问,有没有其他办法,答案是有的,为什么不写?因为还没完全掌握哈哈哈哈
在这个过程中,特别要注意的就是 cron规则 ,这个规则卡了好久,虽然到现在还是不懂,不过问题不大,有一位大佬给了我一个链接
https://cron.qqe2.com/
这个链接解决了 cron 规则,对小白特别友好,不过还是建议弄懂 cron 规则