java定时删除数据库中的图片

Java定时删除数据库中的一个或多个图片路径地址,也是第一次遇到写,希望写出来能给大家带来一些帮助。

1.在application.priperties中配置连接数据库的设置,我创建的是一个spring-boot框架项目,相关jar包需要注意导入,基本上我也没有导入包。

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://ip地址:3306/数据表名?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

time=8

2.controller层编写定时删除任务

package com.ssist.modules.CarPassinfo.web;

import com.ssist.common.utils.CommonUtils;
import com.ssist.common.web.BaseController;
import com.ssist.modules.CarPassinfo.entity.CarPassinfo;
import com.ssist.modules.CarPassinfo.service.CarPassinfoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;


@RestController
public class CarPassinfoController extends BaseController implements ServletContextListener {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private CarPassinfoService carPassinfoService;

    @ResponseBody
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                CarPassinfo carPassinfo = new CarPassinfo();
                // 1.从配置为文件中读取时间
                System.out.println(CommonUtils.props.getProperty("time"));
                String d0 = CommonUtils.props.getProperty("time");
                // 2.获取当前时间
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Calendar c1 = Calendar.getInstance();
                // 3.获取当前时间前第8天时间
                c1.setTime(new Date());
                c1.add(Calendar.DATE , -Integer.valueOf(d0));
                Date d1 = c1.getTime();
                String day = format.format(d1);
                System.out.println("过去八天:"+day);

                Date pass_time = null;
                try {
                    pass_time = format.parse(day);
                    System.out.println(pass_time);
                    // 4.层级传递
                    int r1 = carPassinfoService.delete(pass_time);
                    if(r1 > 0){
                        System.out.println("删除成功");
                    }else{
                        System.out.println("删除失败");
                    }
                } catch (ParseException e) {
                    e.printStackTrace();
                }
      
            }
        },0,86400000);
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}

3.service层

package com.ssist.modules.CarPassinfo.service;

import com.ssist.modules.CarPassinfo.dao.CarPassinfoDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;

@Service
public class CarPassinfoService {

    @Autowired
    private CarPassinfoDao carPassinfoDao;

    public int delete(Date pass_time){
        return carPassinfoDao.delete(pass_time);
    }

}

4.dao层

package com.ssist.modules.CarPassinfo.dao;

import org.springframework.context.annotation.ComponentScan;
import java.util.Date;

@ComponentScan
public interface CarPassinfoDao {

    public int delete(Date pass_time);

}

5.resources 下的mapper设置

<?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="个人项目的dao所在位置">

    <delete id="delete" parameterType="java.util.Date">
        DELETE from res_car_passinfo where pass_time &lt;= (select DATE_ADD(SYSDATE(),interval -8 DAY))
    </delete>
    
</mapper>

6.项目的大致目录截图

 

7.数据库表中需要有一行字段为pass_time,我这里设置的datetime类型,关于删除的sql语句,我想了很长时间才写出来,希望分享出来给大家带来帮助!

还有一个定时删除ftp上8天前的文件夹,希望也能给大家带来参考

https://mp.csdn.net/postedit/84875214


版权声明:本文为cheng123456jie原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。