SpringBoot +Mybatis-plus 结合数据库动态执行定时任务

SpringBoot动态定时任务实现:从@Scheduled到数据库配置的进阶指南 定时任务是后台系统开发的核心组件,用于周期性执行数据同步、报表生成等任务。其基本原理是通过调度器在指定时间触发预定义的任务逻辑。在Java生态中,Spring框架的@Scheduled注解提供了便捷的静态任务支持,但其硬编码特性导致运维变更成本高昂,需重启应用。动态定时任务技术应运而生,它通过将调度规则(如Cron表达式)外部化存储(如数据库),实现了运行时动态修改与立即生效,极大提升了系统的运维灵活性和可维护性。这项技术广泛应用于电商订单处理、数据报表统计、缓存刷新等需要频繁调整执行计划的业务场景。本文聚 阅读详情

SpringBoot + mybatis-plus 结合数据库动态执行定时任务

1.添加依赖

    <properties>
        <java.version>1.8</java.version>
        <mybatis-generator.version>1.3.7</mybatis-generator.version>
        <mysql-connector.version>8.0.15</mysql-connector.version>
        <mybatisplus.version>3.3.0</mybatisplus.version>
        <druid.version>1.1.20</druid.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- MyBatis 生成器 -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>${mybatis-generator.version}</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>
        <!--mybatis-plus 需要 freemarker依赖生成 mapper.xml-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

        <!-- druid连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatisplus.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.10</version>
        </dependency>
    </dependencies>

2.添加数据库记录

DROP DATABASE IF EXISTS `localhost`;
CREATE DATABASE `localhost`;
USE `localhost`;
DROP TABLE IF EXISTS `schedule_setting`;
CREATE TABLE `schedule_setting` (
 `id` varchar(30),
 `cron` varchar(30) 
);
INSERT INTO `schedule_setting` VALUES ('1', '0/5 * * * * ?');

3.环境配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/localhost?useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=true
    username: root
    password: root

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml #指定mapper.xml路径
  global-config:
    db-config:
      id-type: auto #全局默认主键类型设置为自增
  configuration:
    auto-mapping-behavior: partial #只对非嵌套的 resultMap 进行自动映射
    map-underscore-to-camel-case: true #开启自动驼峰命名规则映射
    cache-enabled: false  #禁用缓存

4.创建定时任务(主要核心代码,其他实现)

@Service
public class ScheduleConfigServiceImpl extends ServiceImpl<ScheduleConfigMapper, ScheduleConfig> implements ScheduleConfigService, SchedulingConfigurer {
    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
        scheduledTaskRegistrar.addTriggerTask(
                //1.任务要执行的内容(Runnable)
                () -> System.out.println("执行定时任务逻辑: " + LocalDateTime.now().toLocalTime()),
                //2.设置执行周期(Trigger)
                triggerContext -> {
                    //2.1 从数据库获取执行周期
                    ScheduleConfig schedule = list().get(0);
                    String cron = schedule.getCron();
                    System.out.println("cron" + schedule.getCron());
                    //2.2 合法性校验.
                    if (StringUtils.isEmpty(cron)) {
                        System.out.println("=====表达式为空====");
                    }
                    //2.3 返回执行周期(Date)
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
        );
    }
SpringBoot动态定时任务实现:基于数据库配置与ThreadPoolTaskScheduler 定时任务是后端开发中实现周期性业务逻辑的核心技术,常用于数据同步、报表生成和缓存刷新等场景。其原理是通过调度器在特定时间点触发任务执行。传统的SpringBoot @Scheduled注解虽简单,但配置硬编码,缺乏灵活性。动态定时任务技术通过将任务配置(如Cron表达式、启停状态)外置到数据库,实现了运行时热更新,显著提升了系统的可维护性和可用性。这种模式特别适用于需求频繁变更的工程实践,例如需要根据运营策略动态调整执行频率的报表任务或数据清洗任务。本文以SpringBoot为基础,结合ThreadPool 阅读详情

相关推荐

SpringBoot+MyBatis-Plus实战:农产品库存管理系统设计与实现

在Java企业级应用开发中,SpringBoot凭借其约定优于配置的理念和自动装配能力,极大地简化了基于Spring框架的应用程序创建和部署流程。其核心原理在于通过Starter依赖和自动配置机制,减少了大量繁琐的XML配置,使开发者能够快速搭建可独立运行的、生产级的应用。结合MyBatis-Plus这一强大的ORM框架,可以高效地完成数据持久化操作,其内置的通用Mapper和Service封装,让基础的CRUD开发变得异常简洁。这种技术组合的价值在于,它能够帮助开发者聚焦于核心业务逻辑的实现,而非底层技术

weixin_34195142的博客 479

【Mybatis-Plus租户id结合定时任务 @Scheduled】

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。

m0_48114733的博客 1300

SpringBoot+Vue3+MyBatis构建现代租赁系统架构解析

企业级应用开发中,前后端分离架构已成为主流技术方案。以SpringBoot为核心的后端框架提供自动配置、依赖注入等特性,结合MyBatis实现高效数据持久化;Vue3的响应式系统和组合式API则大幅提升前端开发效率。这种技术组合特别适合电商类系统开发,能有效应对高并发、复杂业务逻辑等挑战。在租赁系统场景下,需要重点处理时效控制、动态计价等特殊需求,通过JWT认证、SQL优化、缓存策略等技术手段保障系统性能与安全。本文以实际项目为例,详解如何运用这些技术构建高可用的租赁服务平台。

weixin_30555515的博客 383

springboot + mybatis-plus整合quartz实现定时任务(超详细,附带sql)

springboot + mybatis-plus整合quartz实现定时任务 之前做过一次定时任务,使用的是quartz框架.好久没有使用过了.想起了又写了个demo,这里只做了添加定时任务及删除定时任务.修改和查看没有做!.测试结果是Ok的.话不多说了.直接上代码!! 整体目录结构: config:放置swagger,quartz,druid配置及任务执行方法 controller:就放置的程序入口 mapper:数据库交互 pojo:放置实体(没有区分.直接使用一个来实现了) service:ser

周不老的博客 5796

mybatis-plus&实践&及架构原理

mybatis-plus&实践&及架构原理

spring+quartz动态定时任务创建 +mybatis

上一次传错了资源了,这个是正确的,包含quartz动态定时任务的

Springboot--整合Mybatis与定时任务quartz

在Springboot–整合定时任务quartz–集群篇中已经介绍了如何集群并使用quartz ,但是我们并不想每个定时任务都去重复的创建JobDetail 和 Trigger,那么是否可以将任务存储在mysql 中,然后在项目启动完成后,统一的去加载任务呢,答案是肯定可以的;通过将任务存储于mysql 中,在项目启动后可以获取所有任务,封装JobDetail和 CronTrigger并交由quartz 管理;

拽着尾巴的鱼儿的博客 1401

跨平台烧录实战:RKDevTool在Windows/Linux/MacOS下的统一与差异

本文详细解析了RKDevTool在Windows、Linux和macOS三大操作系统下的固件烧录实践,重点介绍了RK3576开发板的环境配置、工具链选择、烧录模式切换及常见问题解决方案,帮助开发者构建稳定可靠的跨平台烧录工作流。

cnn8visionary的博客 201

SpringBoot开发之路--Mybatis+Druid动态数据源

SpringBoot开发之路--Mybatic+Druid动态数据源其中出现的问题: 项目地址:动态数据源 实现思路是这样的: 首先实现动态数据源需要借助:AbstractRoutingDataSource 由 DynamicDataSource 实现,返回数据源的bean 名称 DataSourceManager 服务于 DynamicDataSource 用于获取租户ID与获取数据源的帐号信...

gu_zhang_w的博客 417

openeuler在线/离线安装docker服务

openeuler在线/离线安装docker服务

haixuti7的博客 1069

告别图像畸变:手把手教你用HALCON的`gen_image_to_world_plane_map`做高精度视觉测量

本文详细解析了HALCON的`gen_image_to_world_plane_map`算子在工业视觉测量中的应用,通过精确的几何变换消除透视畸变,提升测量精度。文章涵盖相机标定、世界坐标系建立、实战应用及性能优化,适用于液晶屏质检、金属板检测等场景,帮助工程师实现高精度视觉测量。

weixin_28718487的博客 421

MyBatis-Plus使用

支持全局通用方法注入(Writeonce,useanywhere)

qq_50896786的博客 1289

IPD的分析工具与模型(十六)CBB公用基础模块管理实现资源共享,缩短开发周期

CBB流程的开发环节,基于CBB规划中所识别和设计的CBB,进行CBB的详细设计(包括参数设计和接口设计),并最终实现CBB的落地开发。作为特殊类型的技术构件,CBB的开发流程,可沿用技术开发中的构件开发流程,具体包括概念、计划、开发和迁移等步骤,具体可参见前文的相关介绍。有了蓝图与架构设计,落地实施是关键攻坚。具体工作内容包括:具体工作内容包括:a. 以相似性、聚类、相对独行性、可组合、可扩展性、可维护性等原则为指导,按照产品的功能特征和业务类型,聚焦零散的功能点,形成功能模块,实现产品功能模块的划分;

corgi2020的博客 2000

云帆培训考试系统架构解析:SpringBoot+MyBatis-Plus+Vue分层设计与模块化思路

**云帆培训考试系统(yftrain)**是一款多角色在线培训考试系统,基于 **SpringBoot + MyBatis-Plus + Vue** 分层架构开发,集成用户管理、题库管理、考试管理、在线考试、错题训练等完整考试流程,是企业培训内训系统的优秀开源参考。本文用最短的篇幅带你拆解它的分层设计与模块化思路 📐 ## 一、技术选型清单:一套经典且低学习成本的技术栈 先看清全局。这套在线

gitblog_00573的博客 820

新手如何学习车载底层嵌入式软件开发(AutoSar)

汽车嵌入式开发

ACarSoft的博客 4219

揭秘AI人工智能中Stable Diffusion的模型微调技巧

Stable Diffusion作为一种强大的文本到图像生成模型,在艺术创作、设计、娱乐等多个领域展现出了巨大的应用潜力。然而,其默认的模型输出可能无法满足特定用户或特定场景的个性化需求。本文章的目的在于深入揭秘Stable Diffusion的模型微调技巧,让读者能够根据自己的需求对模型进行定制化调整,生成符合特定风格、主题或要求的图像。范围涵盖了从基础概念到实际操作,从理论原理到项目实战的全方位内容,旨在为读者提供一个系统且深入的学习指南。

大模型应用工坊 948

mysql动态建表+定时任务(二、java代码做定时任务,操作mysql数据库)

注:分两篇博客介绍下方三种自动定时建表方式。1.直接操作mysql数据库2.通过java代码定时操作mysql数据库,进行建表3.存储过程写在mysql上,通过java代码设置定时任务调用存储过程。希望对有同样困惑的人有帮助

weixin_43993331的博客 4274

C++性能优化:深入理解缓存一致性与伪共享

在现代多核处理器的世界里,理解缓存一致性和伪共享就像理解一个复杂社会系统的运作规则。正如心理学家阿德勒所说:"人的行为总是有目的的",CPU缓存的每一次同步也都有其深层的硬件逻辑。本文将带你深入探索这些看不见的性能杀手,以及如何在实际项目中与它们优雅共处。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 933

springBoot 实现定时任务

springBoot 实现定时任务

qq_45205390的博客 1162

配置 SAP Web Dispatcher 的实战指南:打通 SAP Fiori、SAP Gateway 与前端系统的关键一跳

SAP Web Dispatcher 在 Fiori 架构中扮演关键角色,作为统一入口处理 HTTPS 请求、实现安全代理和流量分发。它将分散在不同系统的访问路径统一收口,解决浏览器同源策略限制,集中管理 HTTPS 终止和客户端信息传递。典型配置中,Web Dispatcher 监听 443 端口,根据路径将 OData 请求转发至 Gateway 系统,静态资源请求送至前端服务器。SSL 相关配置(如 PSE 文件)确保安全通信,而路由规则(wdisp/system_xx)决定请求转发目标。实施时需注意

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 101

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SpringBoot实现轻量级动态定时任务管控及组件化

本质还是管理的AbstractBaseCronTask子类在线程池中的具体对象,不同的地方是类级别定时任务是一个具体的任务类仅生成一个对象,class路径即是唯一的标识,而方法级别的定时任务均基于BaseMethodLevelTask生成无数个对象,具体标识则是构造函数传入的Bean的反射对象和方法名。] [ bootup:0][main] TaskMysqlOne : ---------------------任务 TaskMysqlOne 开始执行-----------------------

weixin_55010563的博客 905

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringBoot基于Schedule动态定时任务,整合了Mybatis-plus(完整版)

spring boot项目启动完成后,加载数据库里状态为正常的定时任务。被定时任务线程池调用,用来执行指定bean里面的方法。用来从spring容器里获取bean。ScheduledFuture是。定时任务线程池的执行结果。用来增加、删除定时任务。

qq_40415413的博客 762

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE正常情况下我们在开发系统的时候都是使用一个数据源,但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大,便会一个项目对应多个数据源,即就会有个问题,Springboot配置db都是默认加载数据源连接,连接池默认配置,但是配置多个数据库url,这该怎么实现呢?

2509_94082995的博客 551

Springboot 使用 @Scheduled注解定时任务, 方法传参问题

Spingboot 定时任务注解

Neriss_a的博客 4931

Spring Boot SingletonDynamicScheduler 单例动态定时任务调度器(附免费项目源码)

该项目目前实现了单例动态定时任务调度器,支持动态添加、修改、删除定时任务(即时生效),并支持定时任务持久化。

MZS2254399401的博客 1159

MyBatis-Plus与Quartz的共生之道:当ORM遇上定时任务持久化

本文深入探讨了MyBatis-Plus与Quartz的深度整合,构建高可靠定时任务系统。通过SpringBoot框架,结合ORM与任务调度持久化技术,实现高效的企业级应用开发。文章详细介绍了技术选型、环境配置、核心整合技术及高级特性实现,助力开发者打造强大的定时任务管理系统。

apple5的专栏 1032
上一篇: mybatis有二级缓存,为什么还要用redis
下一篇: java8 Stream 大数据量List分批处理切割
Chery Qi
博客等级 码龄10年 154粉丝 68原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值