基于springboot开发的erupt低代码框架,日志清理JAVA
- 共 654 次检阅

package org.wjw.mt.job;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;

import javax.annotation.Resource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import xyz.erupt.annotation.config.Comment;
import xyz.erupt.core.annotation.EruptHandlerNaming;
import xyz.erupt.job.handler.EruptJobHandler;

/**
 * 定期清理Job产生的正常处理结果日志表里的记录
 * 
 * @author White Stone
 *
 *         2021年5月8日
 */
@Service
@EruptHandlerNaming(value="定期清理Job产生的正常处理结果日志表里的记录")
public class CleanJobLogHandler implements EruptJobHandler {
  @Resource
  private JdbcTemplate jdbcTemplate;

  /**
   * @param code 任务编码
   * @param param 任务参数
   */
  @Override
  @Comment(value = "定期清理Job产生的正常处理结果日志表里的记录")
  public String exec(@Comment(value = "任务编码") String code, @Comment(value = "任务参数") String param) {
    LocalDateTime dateTime = LocalDateTime.now();
    dateTime = dateTime.minusDays(15); //删除15天前的成功日志记录

    //@wjw_note: 如果想要在JDBC中,使用Java8的日期LocalDate、LocalDateTime,则必须要求数据库驱动的版本不能低于4.2
    int rowsDeleted =  jdbcTemplate.update("DELETE FROM e_job_log WHERE status=1 and end_time < ?", dateTime);
    
    //老的java.util.Date方式: int rowsDeleted = jdbcTemplate.update("DELETE FROM e_job_log WHERE status=1 and end_time < ?", LocalDateTimeToUdate(dateTime));

    return "清理的记录数:" + rowsDeleted;
  }

  //java.time.LocalDateTime --> java.util.Date
  public java.util.Date LocalDateTimeToUdate(LocalDateTime localDateTime) {
    ZoneId  zone    = ZoneId.systemDefault();
    Instant instant = localDateTime.atZone(zone).toInstant();
    return java.util.Date.from(instant);
  }

}

 

分享到:

这篇文章还没有评论

发表评论