暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SpringBoot2.x整合Mybatis读取数据库实现定时任务

xiaowen分享 2019-09-14
409


SpringBoot2.x读取数据库实现定时任务

SpringBoot2.x整合mybatis读取数据库实现定时任务,适合初学者学习。

第一步:准备开发环境 JDK:1.8 Maven:apache-maven-3.6.0

第二步:添加Maven相关依赖

  1. <parent>

  2. <groupId>org.springframework.boot</groupId>

  3. <artifactId>spring-boot-starter-parent</artifactId>

  4. <version>2.1.4.RELEASE</version>

  5. <relativePath/>

  6. </parent>

  7. <properties>

  8. <java.version>1.8</java.version>

  9. <!-- 解决maven的pom.xml文件第一行报错 Unknown Error -->

  10. <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>

  11. </properties>

  12. <dependencies>

  13. <dependency>

  14. <groupId>org.springframework.boot</groupId>

  15. <artifactId>spring-boot-starter-web</artifactId>

  16. </dependency>

  17. <!-- quartz -->

  18. <dependency>

  19. <groupId>org.springframework.boot</groupId>

  20. <artifactId>spring-boot-starter-quartz</artifactId>

  21. </dependency>

  22. <dependency>

  23. <groupId>org.springframework.boot</groupId>

  24. <artifactId>spring-boot-starter-data-jpa</artifactId>

  25. </dependency>

  26. <dependency>

  27. <groupId>mysql</groupId>

  28. <artifactId>mysql-connector-java</artifactId>

  29. <version>5.1.46</version>

  30. </dependency>

  31. <dependency>

  32. <groupId>org.mybatis.spring.boot</groupId>

  33. <artifactId>mybatis-spring-boot-starter</artifactId>

  34. <version>1.3.2</version>

  35. </dependency>

  36. </dependencies>

  37. <build>

  38. <plugins>

  39. <plugin>

  40. <groupId>org.springframework.boot</groupId>

  41. <artifactId>spring-boot-maven-plugin</artifactId>

  42. </plugin>

  43. </plugins>

  44. </build>

复制

第三步:application.yml配置

  1. server:

  2. port: 8081

  3. spring:

  4. datasource:

  5. url: jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8

  6. driver-class-name: com.mysql.jdbc.Driver

  7. username: root

  8. password: 123456

复制

第四步:创建SQL脚本

  1. create table `task_job` (

  2. `task_id` varchar ,

  3. `task_cron` varchar ,

  4. `task_Name` varchar ,

  5. `task_Desc` varchar ,

  6. `task_status` varchar

  7. );

  8. insert into `task_job` (`task_id`, `task_cron`, `task_Name`, `task_Desc`, `task_status`) values('1','0/5 * * * * ?','查询定时任务','每5秒执行一次','0');

复制

第五步:编写Dao类

  1. package com.xiaowen.dao;

  2. import org.apache.ibatis.annotations.Select;

  3. public interface TaskCronDao {

  4. @Select("SELECT task_cron FROM task_job WHERE task_status='0'")

  5. String findTaskCron();

  6. }

复制

第六步:编写定时器配置类

  1. package com.xiaowen.quart;

  2. import java.text.SimpleDateFormat;

  3. import java.util.Date;

  4. import org.springframework.beans.factory.annotation.Autowired;

  5. import org.springframework.context.annotation.Configuration;

  6. import org.springframework.scheduling.Trigger;

  7. import org.springframework.scheduling.TriggerContext;

  8. import org.springframework.scheduling.annotation.EnableScheduling;

  9. import org.springframework.scheduling.annotation.SchedulingConfigurer;

  10. import org.springframework.scheduling.config.ScheduledTaskRegistrar;

  11. import org.springframework.scheduling.support.CronTrigger;

  12. import com.xiaowen.dao.TaskCronDao;

  13. /**

  14. * 定时器

  15. * @author xiaowen

  16. *

  17. */

  18. @Configuration

  19. @EnableScheduling

  20. public class TaskCronConfig implements SchedulingConfigurer{

  21. @Autowired

  22. private TaskCronDao taskCronDao;

  23. public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {

  24. //从数据库获取执行周期

  25. String cron = taskCronDao.findTaskCron();

  26. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  27. taskRegistrar.addTriggerTask(getRunnable(sdf), getTrigger(cron));

  28. }

  29. private Trigger getTrigger(String cron) {

  30. return new Trigger() {

  31. @Override

  32. public Date nextExecutionTime(TriggerContext triggerContext) {

  33. CronTrigger trigger = new CronTrigger(cron);

  34. Date nextExec = trigger.nextExecutionTime(triggerContext);

  35. return nextExec;

  36. }

  37. };

  38. }

  39. private Runnable getRunnable(SimpleDateFormat sdf) {

  40. return new Runnable() {

  41. @Override

  42. public void run() {

  43. System.out.println("执行任务:"+sdf.format(new Date()));

  44. }

  45. };

  46. }

  47. }

复制

第七步:编写启动类

  1. package com.xiaowen;

  2. import org.mybatis.spring.annotation.MapperScan;

  3. import org.springframework.boot.SpringApplication;

  4. import org.springframework.boot.autoconfigure.SpringBootApplication;

  5. @SpringBootApplication

  6. @MapperScan("com.xiaowen.dao")

  7. public class QuartzApplication {

  8. public static void main(String[] args) {

  9. SpringApplication.run(QuartzApplication.class, args);

  10. }

  11. }

复制

第八步:运行启动类,效果如下

到此,SpringBoot2.x整合mybatis读取数据库实现定时任务已经完成

关注公众号

关注头条号


文章转载自xiaowen分享,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论