package hyd.webser.scheduledTask.task;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import hyd.webser.scheduledTask.entity.Gznrb_tableEntity;
import hyd.webser.scheduledTask.entity.Ycsj_tableEntity;
import hyd.webser.scheduledTask.mapper.Gznrb_tableDao;
import hyd.webser.scheduledTask.mapper.Ycsj_tableDao;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@Component
public class ycsjScheduledTask implements SchedulingConfigurer {
private final Gznrb_tableDao gznrb_tableDao;
@Autowired
public ycsjScheduledTask(Gznrb_tableDao gznrb_tableDao) {
this.gznrb_tableDao = gznrb_tableDao;
}
@Transactional
public void scheduledTask() {
// 这里执行数据库curd后
// 然后抛出异常后数据没有回滚
throw new RuntimeException("抛出异常!!!");
}
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.addTriggerTask(() ->
// 1 需要定时执行的任务
scheduledTask(),
triggerContext -> {
//2.1 从数据库获取执行周期
String cron = gznrb_tableDao.getCron("ycsj");
//2.2 合法性校验.
if (StringUtils.isEmpty(cron)) {
cron = "0 0/1 * * * ?";
}
//2.3 返回执行周期(Date)
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
}
抛出异常后数据没有回滚 ,求大佬帮忙看下
那加个回滚处理试试,rollback transaction.
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632