声明式注解对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.mzph.cn/news/638388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串经典基础面试题(算法村第十二关白银挑战)

反转问题 反转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须**原地修改输入数组**、使用 O(1) 的额外…

基于YOLOv8的目标识别、计数、电子围栏的项目开发过程

0 前言 用于生产环境中物体检测、识别、跟踪&#xff0c;人、车流量统计&#xff0c;越界安全识别 1 YOLOv8概述 YOLOv8 是Ultralytics的YOLO的最新版本。作为一种前沿、最先进(SOTA)的模型&#xff0c;YOLOv8在之前版本的成功基础上引入了新功能和改进&#xff0c;以提高性…

cupy,一个超级实用的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超级实用的 Python 库 - cupy。 Github地址&#xff1a;https://github.com/cupy/cupy 深度学习和科学计算需要处理大规模的数据和复杂的计算任务&#xff0c;而Python是一…

spring boot 常用的 Cron 表达式

在使用定时调度任务的时候&#xff0c;我们最常用的&#xff0c;就是cron表达式了。通过cron表达式来指定任务在某个时间点或者周期性的执行。cron表达式配置起来简洁方便&#xff0c;无论是Spring的Scheduled还是用Quartz框架&#xff0c;都支持cron表达式。 cron表达式含义常…

C语言易忘操作符全集

位操作符 1.按位与(&) 这个操作符对两个整数的每一位进行比较&#xff0c;如果两个相应的位都为1&#xff0c;则结果为1&#xff0c;否则为0。 int a 60; // 60 0010 1100 in binary int b 13; // 13 0000 1101 in binary int c a & b; // c 0000 110…

tag 标签

tag 标签 在使用 Git 版本控制的过程中&#xff0c;会产生大量的版本。如果我们想对某些重要版本进行记录&#xff0c;就可以给仓库历史中的某一个commit 打上标签&#xff0c;用于标识。 在本章中&#xff0c;我们将会学习如何列出已有的标签、如何创建和删除新的标签、以及…

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息 2024/1/16 17:55 百度&#xff1a;RK3399 ALC5640 RK3399 RT5640 BING&#xff1a;RK3399 ALC5640 LINE-IN接麦克风不会有声音的。 耳机只有右边有声音&#xff0c;但是偏小&#xff0c;可以通过音量…

计算机安全学习笔记(VI):9道关于网络安全的练习题

1.哪个 UDP 字段用于检测数据报损坏&#xff1f; a. 总长度b. 目的端口c. 校验和d. 源端口 正确答案是&#xff1a; c. 校验和(Checksum) 在UDP&#xff08;用户数据报协议&#xff09;中&#xff0c;校验和&#xff08;Checksum&#xff09;字段用于检测数据报文的完整性。…

C++ memmove 学习

memmove&#xff0c;将num字节的值从源指向的位置复制到目标指向的内存块。 允许目标和源有重叠。 当目标区域与源区域没有重叠则和memcpy函数功能相同。 宽字符版本是wmemmove&#xff0c;安全版本加_s&#xff1b; #include "stdafx.h" #include<iostream&g…

如何为不同品牌的笔记本电脑设置充电限制,这里提供详细步骤

笔记本电脑的电池健康状况至关重要。延长电池寿命可以帮你省下不少钱。对于长时间充电的Windows 11笔记本电脑用户来说,将电池电量限制在80%是很重要的。 虽然操作系统没有提供设置自定义电池充电限制的内置方法,但仍有一些方法可以在Windows 11中配置电池设置,并将其限制在…

华南理工大学数字信号处理实验实验一(薛y老师版本)matlab源码

一、实验目的 1、加深对离散信号频谱分析的理解&#xff1b; 2、分析不同加窗长度对信号频谱的影响&#xff1b; 3、理解频率分辨率的概念&#xff0c;并分析其对频谱的 影响&#xff1b; 4、窗长和补零对DFT的影响 实验源码&#xff1a; 第一题&#xff1a; % 定义离散信…

面试题-MySQL如何定位慢查询

慢查询出现的情况就这些&#xff1a;聚合查询、多表查询、表数据量过大查询、深度分页查询。 表象&#xff1a;页面加载过慢、接口压测响应时间过长&#xff08;超过1S&#xff09;。 假如你的业务接口就是比较慢&#xff0c;你怎么知道是SQL的问题呢&#xff1f;就算是SQL的…

【多线程的安全问题】synchronized 和 volatile——你必须知道的妙用!

&#x1f4c4;前言&#xff1a;本文的主要内容是讨论个人在多线程编程带来的安全问题的表现、原因以及对应的解决方法。 文章目录 一. 了解多线程安全问题二. 线程不安全的现象及原因&#x1f346;1. 修改共享的数据&#xff08;根本原因&#xff09;&#x1f345;2. 原子性&am…

2023美赛各题分析,2024美赛数学建模思路解析2.2日第一时间更新

目录 2024美赛数学建模各题思路模型代码&#xff1a;开赛后第一时间更新&#xff0c;更新见文末 一、2023题目重述 拟解决的问题 我们的工作&#xff1a; 二、模型和计算 1.数据预处理 2.报告数量区间预测模型 3.猜词结果分布预测模型 2024美赛数学建模交流&#xff0…

MicroPython核心(1):源码获取、编译构建

本文介绍了MicroPython在主要平台进行构建的基本方法&#xff0c;包括如何进行版本控制、获取和构建移植的源代码、构建文档、运行测试&#xff0c;以及MicroPython代码库的目录结构。 使用git进行源码管理 MicroPython托管在GitHub上&#xff0c;并使用Git进行源码管理。在进…

class_14:继承

C继承有点类似于c语言 结构体套用 #include <iostream> #include <string> using namespace std;//基类,父类 class Vehicle{ public:string type;string contry;string color;double price;int numOfWheel;void run();void stop(); };//派生类&#xff0c…

commit 历史版本记录修正

commit 历史版本记录修正 当 Bug 发生的时候&#xff0c;我们会需要去追踪特定 bug 的历史记录&#xff0c;以查出该 bug 真正发生的原因&#xff0c;这个时候就是版本控制带来最大价值的时候。 因此&#xff0c;要怎样维持一个好的版本记录是非常重要的&#xff0c;下面是一…

Rockchip linux USB 驱动开发

Linux USB 驱动架构 Linux USB 协议栈是一个分层的架构&#xff0c;如下图 5-1 所示&#xff0c;左边是 USB Device 驱动&#xff0c;右边是 USB Host 驱动&#xff0c;最底层是 Rockchip 系列芯片不同 USB 控制器和 PHY 的驱动。 Linux USB 驱动架构 USB PHY 驱动开发 USB 2…

Java三大集合

什么是List接口&#xff1f;它有哪些实现类&#xff1f; List接口是Java集合框架中的一种重要接口&#xff0c;它继承自Collection接口&#xff0c;是单列集合的一个重要分支。List接口允许出现重复的元素&#xff0c;所有的元素是以一种线性方式进行存储的&#xff0c;在程序…

手机也能随时随地玩红警啦!

还在为找不到红警安装包苦恼吗&#xff1f; 现在可以随时随地&#xff0c;无论手机、ipad、电脑都可以无需安装包在线玩红警啦&#xff01;&#xff01; 不仅能本地单机玩耍&#xff0c;还能联网玩耍&#xff08;可以和老外一起玩哦&#xff5e;&#xff09; 具体在线链接可…