文章插图
支持当前事务的“女生”,这里的事务指的是“房子”,它分为 3 种(普通型女生):
- Propagation.REQUIRED(需要有房子):有房子了咱们一起住,没房子了咱们一起赚钱买房子 。
- Propagation.SUPPORTS(可以有房子):有房子了就一起住,没房子了咱们就一起租房子 。
- Propagation.MANDATORY(强制有房子):有房子了就一起住,没房子了就分手 。
- Propagation.REQUIRES_NEW:不要你的房子,必须一起赚钱买房子 。
- Propagation.NOT_SUPPORTED:不要你的房子,必须一起租房子 。
- Propagation.NEVER:必须一起租房子,你有房子就分手 。
事务传播机制使用与演示接下来我们演示一下事务传播机制的使用,以下面 3 个最典型的事务传播级别为例:
- 支持当前事务的 REQUIRED;
- 不支持当前事务的 REQUIRES_NEW;
- 嵌套事务 NESTED 。
事务传播机制的示例,需要用到以下两张表:
-- 用户表CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL, `password` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL, `createtime` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC;-- 日志表CREATE TABLE `log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` text NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;创建一个 Spring Boot 项目,核心业务代码有 3 个:UserController、UserServcie 以及 LogService 。在 UserController 里面调用 UserService 添加用户,并调用 LogService 添加日志 。
REQUIRED 使用演示REQUIRED 支持当前事务 。UserController 实现代码如下,其中 save 方法开启了事务:
@RestControllerpublic class UserController { @Resource private UserService userService; @Resource private LogService logService; @RequestMapping("/save") @Transactional public Object save(User user) { // 插入用户操作 userService.save(user); // 插入日志 logService.saveLog("用户插入:" + user.getName()); return true; }}UserService 实现代码如下:
@Servicepublic class UserService { @Resource private UserMapper userMapper; @Transactional(propagation = Propagation.REQUIRED) public int save(User user) { return userMapper.save(user); }}
经验总结扩展阅读
- 如何评价小说阴阳刺青师
- 关于2021年来了心情说说短语
- 法拉第的名言
- 普通话考试命题说话三分钟多少字
- 灵尊之子司进小说叫什么
- 十月围城这小说谁写的十万火急
- 心情不好的抖音说说
- 关于乐谱的一个简单的知识
- 厨房吊顶用什么颜色好
- 晚安唯美正能量句子