1.在applicationContext.xml添加task定時任務的約束
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.3.xsd">
2.創建定時任務類 com.zq.job.TaskJob.java並把job包設爲自動掃描的包
3.寫定時任務類
package com.cyw.job;
import java.util.Date;
import org.apache.tools.ant.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.cyw.service.UserService;
//定時任務類
@Component
public class TaskJob {
@Autowired
UserService userService;
@Scheduled(cron="0/10 * * * * ?")
public void userGrade(){
System.out.println("定時器執行時間"+DateUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
userService.updateGrade();
}
}
案例:
滿足條件後第二天自動升級商城用戶級別
在數據庫添加相應字段,必要的設默認值
User類中添加相應屬性
定時更新用戶等級(上面代碼已寫)
UserServiceImpl中寫updateGrade()方法(其他的自動添加)
@Override
public void updateGrade() {
List<Map<String,Object>> gradeList = new ArrayList<Map<String,Object>>();
Map<String,Object> map = new HashMap<String, Object>();
map.put("grade", "1");//暫時先用固定值
map.put("total", "0");
gradeList.add(map);
map = new HashMap<String, Object>();
map.put("grade", "2");
map.put("total", "5000");
gradeList.add(map);
map = new HashMap<String, Object>();
map.put("grade", "3");
map.put("total", "20000");
//查詢符合升級條件的用戶List<User>
List<User> users = userDao.findByTotal(gradeList);
//更新用戶級別+1
if(users!=null&&users.size()>0){
userDao.updateGrade(users);
}
}
sql(查找符合條件的、更新等級)
(注意mybits中的大於小於號寫法)
附:定時任務參數詳解