1.applicationContext.xml 添加约束
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"> <!--放开定时任务配置 --> <task:annotation-driven />
2. 新建包 com.rb.job
3. 包内添加TaskJob.class
package com.rb.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.rb.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(); } }
4.user表添加属性 如图所示:
5.User.java
private Integer grade;//级别
private Double total;//消费总金额
private Double account;//账户余额
public Integer getGrade() {
return grade;
}
public void setGrade(Integer grade) {
this.grade = grade;
}
public Double getTotal() {
return total;
}
public void setTotal(Double total) {
this.total = total;
}
public Double getAccount() {
return account;
}
public void setAccount(Double account) {
this.account = account;
}
private String realname;
6.UserService 添加新方法
public User findById(Integer id);
public void updateGrade();
UserServiceImpl.java
@Override
public User findById(Integer id) {
return userDao.findById(id);
}
@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");
gradeList.add(map);
//查询符合会员等级升级条件的用户List<User>
List<User> users = userDao.findByTotal(gradeList);
if (users != null && users.size()>0) {
userDao.updateGrade(users);
}
//更新这些用户级别+1
}
7. UserDao.java
public User findById(Integer id);
public void updateGrade(List<User> users);
public List<User> findByTotal(List<Map<String, Object>> gradeList);