ssm框架開發定時任務到達某一個時間點自動更新數據

  mybatis的mapper.xml


<mappernamespace="com.jw.pb.activity.dao.ActivityMapper">

<updateid="updateByTimeTask"parameterType="map">

update pb_activity_table

set STATUS = #{0}

where TIME &lt;= #{1} AND ENDTIME &gt; #{1}

</update>

</mapper>

解釋:

功能:定時任務每一分鐘執行一次,取當前系統時間作爲更新條件來判斷,當符合表達式(TIME開始時間 <=#{1}系統時間 <ENDTIME結束時間 )時更新表字段STATUS = #{0}。


pb_activity_table是我的數據庫裏的表

STATUS要更新的字段

TIME &gt #{1} &lt ENDTIME更新條件

0,1 0表示是第一個參數,1表示第二個參數 。因爲我傳入的更新條件參數是數據表裏沒有的字段,所以用下表0,1

&gt表示大於&lt表示小於,因爲mybatis不支持符號<,>

mybatis的mapper.java接口

int updateByTimeTask(Integer status, String nowtime ); 

解釋:方法名updateByTimeTask對應xml裏的id="updateByTimeTask",參數有兩個,按順序依次是Integer status String nowtime,也就是對應xml裏的#{0},#{1}


接口Service.java

public interface ActivityService extends BaseService {
void activityAutoIn();
}


實現類

@Service("Service")
public class ActivityServiceImpl implements Service {
@Resource
private ActivityMapper activityDao;

@Override
public void activityAutoIn() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//時間格式年月日時分
String time = sdf.format(new Date());//按照格式生成當前時間
this.activityDao.updateByTimeTask(5, time);//映射到sql語句
}

}


定時器

/**
 * spring 定時任務
 * @author Administrator
 *
 */
@Component
public class Task {

/**
* 每1分鐘一次
*/
@Scheduled(cron="0 0/1 * * * ?")
public void activityAutoIn() {
Service service = (Service)ServiceAccess.getService("Service");
service.activityAutoIn();//執行方法
insertSystemLog("活動進行");//寫入日誌
}

}

數據表


發佈了78 篇原創文章 · 獲贊 72 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章