mybatis的mapper.xml
<mappernamespace="com.jw.pb.activity.dao.ActivityMapper">
<updateid="updateByTimeTask"parameterType="map">
update pb_activity_table
set STATUS = #{0}
where TIME <= #{1} AND ENDTIME > #{1}
</update>
</mapper>
解釋:
功能:定時任務每一分鐘執行一次,取當前系統時間作爲更新條件來判斷,當符合表達式(TIME開始時間 <=#{1}系統時間 <ENDTIME結束時間 )時更新表字段STATUS = #{0}。
pb_activity_table是我的數據庫裏的表
STATUS要更新的字段
TIME > #{1} < ENDTIME更新條件
0,1 0表示是第一個參數,1表示第二個參數 。因爲我傳入的更新條件參數是數據表裏沒有的字段,所以用下表0,1
>表示大於<表示小於,因爲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("活動進行");//寫入日誌
}
}
數據表