声明式注解对XXL-JOB的定时任务代码生效吗?

说明:源于博主的思考,本文验证一下声明式注解,即@Transactional注解,对XXL-JOB的定时任务是否生效。

准备

首先,创建一个需要事务的场景。有两张表,一张部门表,一张用户表,用户隶属于某个部门。当删除部门时,该部门下的用户也需要全部删除。

(User,用户对象)

import lombok.Data;
import java.io.Serializable;

/**
 * 用户实体类
 */
@Data
public class User implements Serializable {

    /**
     * 用户ID
     */
    private Integer id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 用户密码
     */
    private String password;

    /**
     * 用户隶属于哪个部门
     */
    private Integer departId;
}

(Department,部门对象)

import lombok.Data;

import java.io.Serializable;

/**
 * 部门实体类
 */
@Data
public class Department implements Serializable {

    /**
     * 部门ID
     */
    private Integer id;

    /**
     * 部门名称
     */
    private String name;
}

删除记录对应的Mapper方法;

(根据部门ID删除用户)

    <delete id="deleteUserByDepartId" parameterType="int">
        delete from tb_user where depart_id = #{id}
    </delete>

(根据ID删除部门)

    <delete id="deleteDepartmentById" parameterType="int">
        delete from tb_dep where id = #{id}
    </delete>

(定时任务代码:删除部门,同时删除部门下的所有用户)

    @XxlJob("deleteDepartmentById")
    @Transactional(rollbackFor = Exception.class)
    public void deleteDepartmentById() {
        System.out.println("====================定时任务开始执行====================");

        // 删除部门ID为1的记录
        departmentService.deleteDepartmentById(1);
        System.out.println("====================删除部门完成====================");

		// 手动制造异常
        System.out.println(1/ 0);

        // 删除部门下的用户
        userService.deleteUserByDepartId(1);
        System.out.println("====================删除部门下的用户完成====================");
    }

对应的表内容

在这里插入图片描述

在这里插入图片描述

启动

打开XXL-JOB后台,找到这个定时任务,执行一次。

在这里插入图片描述

查看控制台,可以看到删除部门的SQL有打印出来;

在这里插入图片描述

查看数据库,部门没有删掉,说明事务起作用了。

在这里插入图片描述

去掉注解,再试下。

在这里插入图片描述

部门被成功删掉了,说明代码是没问题的。

在这里插入图片描述

总结

声明式注解对XXL-JOB的定时任务代码是有效的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/338431.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

huggingface学习 | 云服务器使用hf_hub_download下载huggingface上的模型文件

系列文章目录 huggingface学习 | 云服务器使用git-lfs下载huggingface上的模型文件 文章目录 系列文章目录一、hf_hub_download介绍二、找到需要下载的huggingface文件三、准备工作及下载过程四、全部代码 一、hf_hub_download介绍 hf_hub_download是huggingface官方支持&…

【Godot4自学手册】第二节主人公设置

继续学习Godot&#xff0c;今天是第二节的内容&#xff0c;本节主要完成游戏玩家的设置&#xff0c;将玩家展现在场景中。 一、新建一个主场景 首先在场景面板中单击2D场景&#xff0c;如图。 这样我们就有了一个2D场景&#xff0c;我们将Node2D重新命名为“Main”&#xff…

核密度曲线(python

目录 1.代码&#xff1a;2.效果&#xff1a;小结&#xff1a; 1.代码&#xff1a; import pandas as pd import matplotlib.pyplot as plt # 读入数据 file r123.xlsx sheet Sheet2 col S213 # 标题名称 title col 供订比曲线 xlabel 供订比 # 横轴显示范围 xleft 0 xr…

数据操作——缺失值处理

缺失值处理 缺失值的处理思路 如果想探究如何处理无效值, 首先要知道无效值从哪来, 从而分析可能产生的无效值有哪些类型, 在分别去看如何处理无效值 什么是缺失值 一个值本身的含义是这个值不存在则称之为缺失值, 也就是说这个值本身代表着缺失, 或者这个值本身无意义, 比如…

各省份经济不平等和家庭支出分布数据:恩格尔系数和泰尔指数(2000-2022年)

中国各省的恩格尔系数和泰尔指数数据为我们提供了关于这些地区居民消费结构和收入差距的了解。 恩格尔系数是衡量居民生活水平和消费结构的一个重要指标&#xff0c;它表示食品支出占家庭总支出的比例。通常&#xff0c;恩格尔系数较低表明居民的生活水平较高。 泰尔指数则是…

ChatGPT时代对大数据应用的展望

前言&#xff1a; 2022年底&#xff0c;科技圈有个爆炸性新闻&#xff0c;ChatGPT的诞生&#xff0c;引发了世界范围内的震惊&#xff1b;人工智能在与人交流上有了划时代的技术突破&#xff0c;可以和人深入的理解交流&#xff0c;让许多公司和领域对这项技术有了更多遐想。对…

ElasticSearch(ES) 搜索入门笔记

文章目录 ElasticSearch(ES) 搜索入门笔记环境准备-本地安装ES和Kibanamapping字段类型mapping 参数Analyzer自定义分析器分析器的测试中文分词 ik_maxNormalizer 其他关于mapping的要点 ES 搜索[match all 查询](https://www.elastic.co/guide/en/elasticsearch/reference/cur…

77. 组合 - 力扣(LeetCode)

题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 输入示例 n 4, k 2输出示例 [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ]解题思路 我们使用回溯、深度优先遍历的思想&#xff0c;我们使用一个栈 path…

【C++】命名空间(namespace)

文章目录 1. 为什么要有命名空间?2. 命名空间介绍3.命名空间三种使用方式4. 注意 1. 为什么要有命名空间? 在C语言中&#xff0c;局部变量和全局变量如果同名&#xff0c;在使用时可能会造成冲突。这并不是想避免就能避免的&#xff0c;在程序中&#xff0c;不仅仅是变量&…

《WebKit 技术内幕》之八(3):硬件加速机制

3 其他硬件加速模块 3.1 2D图形的硬件加速机制 其实网页中有很多绘图操作是针对2D图形的&#xff0c;这些操作包括通常的网页绘制&#xff0c;例如绘制边框、文字、图片、填充等&#xff0c;它们都是典型的2D绘图操作。在HTML5中&#xff0c;规范又引入了2D绘图的画布功能&a…

校企对接实习管理系统的设计与实现-计算机毕业设计源码11959

摘 要 校企合作实习是一种重要的实践教学模式&#xff0c;但是在实际的推行过程中&#xff0c;存在许多管理问题。其中包括远程指导困难、学生管理困难、校企信息沟通不畅等问题一直困扰着校方负责管理实习的教师们。随着互联网系统开发技术的发展&#xff0c;应用web技术开发…

一文梳理金融风控建模全流程(Python)

▍目录 一、简介 风控信用评分卡简介 Scorecardpy库简介 二、目标定义与数据准备 目标定义 数据准备 三、安装scorecardpy包 四、数据检查 五、数据筛选 六、数据划分 七、变量分箱 卡方分箱 手动调整分箱 八、建立模型 相关性分析 多重共线性检验VIF KS和AUC …

学习笔记|串口通信的基础知识|同步/异步|RS232|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础

目录 1.串口通信的基础知识串口通信(Serial Communication)同步/异步&#xff1f;全双工&#xff1f;常见的串口软件的参数 2.STC32的串口通信实现原理引脚选择&#xff1a;实现分时复用模式选择串口1模式1&#xff0c;模式1波特率计算公式 3.串口通信代码实现编写串口1通信程序…

【嘉立创EDA-PCB设计指南】4.模块化布局

前言&#xff1a;本文对本专栏中的【嘉立创EDA-PCB设计指南】前面绘制的原理图进行模块化布局&#xff0c;首先进行预布局&#xff08;将每个模块放一起&#xff09;&#xff0c;然后进行精细化布局&#xff08;按照原理图来精细化布局&#xff09;。 目录 模块化预布局 模块…

cesium实现动态围栏

项目中使用到了cesium,需要实现动态的围栏的效果&#xff0c; 在网上也找了好多案例&#xff0c;通过着色器来实现效果&#xff0c;为此也有好多博主也附上了自己的代码&#xff0c;也许是因为使用方法不同&#xff0c;复制代码并修改依旧还是没有通过他们的方式实现效果【着色…

【cucumber】cluecumber-report-plugin生成测试报告

cluecumber为生成测试报告的第三方插件&#xff0c;可以生成html测报&#xff0c;该测报生成需以本地json测报的生成为基础。 所以需要在测试开始主文件标签CucumberOptions中&#xff0c;写入生成json报告。 2. pom xml文件中加入插件 <!-- 根据 cucumber json文件 美化测…

Python正则表达式Regular Expression初探

目录 Regular 匹配规则 单字符匹配 数量匹配 边界匹配 分组匹配 贪婪与懒惰 原版说明 特殊字符 转义序列 模块方法 函数说明 匹配模式 常用匹配规则 1. 匹配出所有整数 2. 匹配11位且13开头的整数 Regular Python的re模块提供了完整的正则表达式功能。正则表达式…

Github操作网络异常笔记

Github操作网络异常笔记 1. 源由2. 解决2.1 方案一2.2 方案二 3. 总结 1. 源由 开源技术在国内永远是“蛋疼”&#xff0c;这些"政治"问题对于追求技术的我们&#xff0c;形成无法回避的障碍。 $ git pull ssh: connect to host github.com port 22: Connection ti…

即插即用篇 | AKConv:具有任意采样形状和任意参数数量的卷积核

基于卷积操作的神经网络在深度学习领域取得了显著的成果,但标准卷积操作存在两个固有缺陷。一方面,卷积操作受限于局部窗口,无法捕捉其他位置的信息,而其采样形状是固定的。另一方面,卷积核的大小固定为kk,呈固定的正方形形状,而参数数量往往随大小呈平方增长。显然,不…

5. 函数调用过程汇编分析

函数调用约定 __cdecl 调用方式 __stdcall 调用方式 __fastcall 调用方式 函数调用栈帧分析 补充说明 不同的编译器实现不一样&#xff0c;上述情况只是VC6.0的编译实现即便是在同一个编译器&#xff0c;开启优化和关闭优化也不一样即便是同一个编译器同一种模式&#xff0c;3…
最新文章