首先需要建立一个定时的任务,定时检测当天过生日的人,如下:
/**
* 生日提醒,每天的9点钟提醒
* */
@Scheduled(cron = "0 0 9 ? * *")
@Transactional(rollbackFor = {Exception.class}, propagation = Propagation.REQUIRED)
public void birthdayReminder() {
//检测人员信息管理数据库中的生日时间和当前时间是否相差整数年
//返回今天要过生日的人员数据
List<EmployeeDetail> employeeDetailList = employeeDetailDao.selectBirthday();
if(employeeDetailList.size() > 0){
//消息推送功能,待定
}
}
其中使用注解的方式实现定时,同时也可以使用 @Scheduled(fixedRate = 120000) 注解,表示2分钟执行一次,具体的 @Scheduled(cron = “0 0 9 ? * *”)表达式请自行百度:
然后,在数据库中查询满足条件的数据,具体表达式如下:
<select id="selectBirthday" resultType="com.jwkj.api.web.entity.EmployeeDetail">
SELECT
<include refid="Base_Column_List"/>
from employee_detail
WHERE
birthday is not null and
MONTH(birthday) = MONTH(NOW()) and DAY(birthday) = DAY(NOW())
</select>