Quartz定时任务

简介: Quartz定时任务

引入依赖

<!--添加Quartz的支持 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>

编辑配置文件

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.jt.quartz.OrderQuartz;
@Configuration
public class OrderQuartzConfig {
  
  //定义任务详情
  @Bean
  public JobDetail orderjobDetail() {
    //指定job的名称和持久化保存任务
    return JobBuilder
        .newJob(OrderQuartz.class)
        .withIdentity("orderQuartz")
        .storeDurably()
        .build();
  }
  //定义触发器
  @Bean
  public Trigger orderTrigger() {
    /*SimpleScheduleBuilder builder = SimpleScheduleBuilder.simpleSchedule()
        .withIntervalInMinutes(1) //定义时间周期
        .repeatForever();*/
    CronScheduleBuilder scheduleBuilder 
      = CronScheduleBuilder.cronSchedule("0 0/1 * * * ?");
    return TriggerBuilder
        .newTrigger()
        .forJob(orderjobDetail())
        .withIdentity("orderQuartz")
        .withSchedule(scheduleBuilder).build();
  }
}

编辑具体任务

import java.util.Calendar;
import java.util.Date;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.jt.mapper.OrderMapper;
import com.jt.pojo.Order;
//准备订单定时任务
@Component  //orderQuartz
public class OrderQuartz extends QuartzJobBean{
  @Autowired
  private OrderMapper orderMapper;
 
  
  /**
   * 将超时30分钟的订单状态码由1改为6
   * 条件:  //now - created >  30分钟 
   *     created < now-30分钟
   *     and status = 1
   */
  @Override
  @Transactional
  protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
    //获取当前时间的日历对象
    Calendar calendar = Calendar.getInstance();
    //毫秒/秒/分钟/小时/天/月/年/星期
    calendar.add(Calendar.MINUTE, -30);
    //获取超时时间
    Date timeOut = calendar.getTime();
    Order order = new Order();
    order.setStatus(6).setUpdated(new Date());
    UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
    updateWrapper.lt("created",timeOut);
    updateWrapper.eq("status", 1);
    orderMapper.update(order, updateWrapper);
    System.out.println("定时任务执行完成!!!!");
  }
}
目录
相关文章
|
Web App开发 JavaScript 前端开发
低代码系列——js沙箱设计(一)
由于自己参与过低代码平台开发,所以希望能把我自己开发低代码中遇到的问题或者一些设计思路进行总结汇总,这是开始写的第一篇,也是比较基础的一篇,关于低代码平台的介绍会放在介绍篇章,这篇就不做过多介绍。
467 0
Mybatis-plus查询表中指定字段(不查询全部字段)
Mybatis-plus查询表中指定字段(不查询全部字段)
954 0
Mybatis-plus查询表中指定字段(不查询全部字段)
|
存储 Java API
Quartz表达式:定时任务调度的高级配置与应用
Quartz表达式:定时任务调度的高级配置与应用
|
存储 Java 数据库连接
技术好文:quartz基本介绍和使用
技术好文:quartz基本介绍和使用
417 0
|
前端开发
前端轮询问题之为什么使用setTimeout可以保证轮询请求的唯一性
前端轮询问题之为什么使用setTimeout可以保证轮询请求的唯一性
200 0
|
11月前
|
SQL 存储 关系型数据库
如何查看数据库中的表及其在SQL中的实现
引言:在数据库管理和数据分析的过程中,我们经常需要查看数据库中的表以获取相关信息。表是数据库中存储数据的主要结构,通过查看这些表,我们可以了解数据库的结构和内容。本文将详细介绍如何使用SQL查询来查看数据库中的表,包括各种相关操作和命令的使用。一、了解数据库和表的基本概念在讨论如何查看数据库中的表之
442 2
|
11月前
|
消息中间件 NoSQL Redis
Redis Stream
10月更文挑战第20天
154 2
|
12月前
|
JSON 关系型数据库 MySQL
MySQL 8.0常用函数汇总与应用实例
这些函数只是MySQL 8.0提供的众多强大功能的一部分。通过结合使用这些函数,你可以有效地处理各种数据,优化数据库查询,并提高应用程序的性能和效率。
293 3
|
10月前
|
存储 NoSQL Redis
Redis常见面试题:ZSet底层数据结构,SDS、压缩列表ZipList、跳表SkipList
String类型底层数据结构,List类型全面解析,ZSet底层数据结构;简单动态字符串SDS、压缩列表ZipList、哈希表、跳表SkipList、整数数组IntSet
|
敏捷开发 算法 测试技术
【软件设计师—基础精讲笔记5】第五章 软件工程基础
【软件设计师—基础精讲笔记5】第五章 软件工程基础
184 2