有些時候用戶註冊了到不激活,超過30天后我們要刪除掉
首先來寫存儲過程
BEGIN
#刪除錯過30天沒激活的用戶
declare now_time dateTime default now();
delete from userdetail where ud_id in (select u_id from user where u_status = 0 and (UNIX_TIMESTAMP(now_time) - UNIX_TIMESTAMP(u_registerTime))/60*60*24*7>1);
delete from user where u_status = 0 and (UNIX_TIMESTAMP(now_time) - UNIX_TIMESTAMP(u_registerTime))/60*60*24*7>1 ;
END
然後在service裏調用
/**
* 刪除未激活的用戶
*/
@SuppressWarnings("unchecked")
public void delNoActiveUser(){
Connection connection = null;
CallableStatement callableStatement = null;
Session session = userDao.getHibernateTemplate().getSessionFactory().openSession();
try {
Transaction ts = session.beginTransaction();
connection = session.connection();
connection.setAutoCommit(false);
//connection = SessionFactoryUtils.getDataSource(userDao.getHibernateTemplate().getSessionFactory()).getConnection();
callableStatement = connection.prepareCall("{call pro_delete_overdue_user() }");
callableStatement.executeUpdate();
ts.commit();
callableStatement.close();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
callableStatement.close();
connection.close();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
最後放在定時任務裏執行
<!-- 定期刪除超過30天沒激活的用戶 -->
<bean id="jobDetailDelNoActiveUser"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="registerService" />
<property name="targetMethod" value="delNoActiveUser" />
</bean>
<bean id="cronTriggerDelNoActiveUser"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetailDelNoActiveUser" />
<property name="cronExpression" value="0 0 2 * * ? " />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerDelNoActiveUser" />
</list>
</property>
</bean>