当前位置: 首页 > news >正文

Spring实现事务(一)

Spring事务

  • .
  • 什么是事务
  • 事务的操作
  • Spring中事务的实现
    • 准备工作
      • 创建表
      • 创建项目,引入Spring Web, Mybatis, mysql等依赖
      • 配置文件
      • 实体类
    • 编程式事务(手动写代码操作事务)
    • 声明式事务(利用注解自动开启和提交事务)

.

在这里插入图片描述

什么是事务

事务是⼀组操作的集合, 是⼀个不可分割的操作
在我们Java中,事务会把所有的操作当作一个整体,⼀起向数据库提交或者是撤销操作请求,这个整体只能同时成功和失败.

事务的操作

事务有三个操作步骤:
1.开启事务:start transaction/ begin(在对整体执行之前进行开启)
2.提交事务:commit(当这个整体都执行成功之后,就会将事务进行提交)
3.回滚事务:rollback(当这个整体之中某个部分出现错误,事务就会进行回滚)

Spring中事务的实现

Spring中的事务操作分为两类
1.编程式事务
2. 声明式事务

准备工作

需求:用户注册,在注册时向日志中插入一条操作记录

创建表

DROP DATABASE IF EXISTS trans_test;
CREATE DATABASE trans_test DEFAULT CHARACTER SET utf8mb4;
-- ⽤⼾表
DROP TABLE IF EXISTS user_info;
CREATE TABLE user_info (
`id` INT NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR (128) NOT NULL,
`password` VARCHAR (128) NOT NULL,
`create_time` DATETIME DEFAULT now(),
`update_time` DATETIME DEFAULT now() ON UPDATE now(),
PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARACTER SET = utf8mb4 COMMENT = '⽤⼾表';
-- 操作⽇志表
DROP TABLE IF EXISTS log_info;
CREATE TABLE log_info (
`id` INT PRIMARY KEY auto_increment,
`user_name` VARCHAR ( 128 ) NOT NULL,
`op` VARCHAR ( 256 ) NOT NULL,
`create_time` DATETIME DEFAULT now(),
`update_time` DATETIME DEFAULT now() ON UPDATE now()
) DEFAULT charset 'utf8mb4';

创建项目,引入Spring Web, Mybatis, mysql等依赖

配置文件

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/trans_test?characterEncoding=utf8&useSSLusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver
mybatis:configuration: # 配置打印 MyBatis⽇志log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true #配置驼峰⾃动转换

实体类

package com.example.demo.model;import lombok.Data;import java.util.Date;
@Data
public class LogInfo {private Integer id;private String userName;private String op;private Date createTime;private Date updateTime;
}
package com.example.demo.model;import lombok.Data;import java.util.Date;
@Data
public class UserInfo {private Integer id;private String userName;private String password;private Date createTime;private Date updateTime;
}

编程式事务(手动写代码操作事务)

声明式事务(利用注解自动开启和提交事务)

http://www.lryc.cn/news/292254.html

相关文章:

  • 获取依赖aar包的两种方式-在android studio里引入 如:glide
  • vue3-深入组件-依赖注入
  • 【项目日记(七)】第三层: 页缓存的具体实现(上)
  • 深入解剖指针篇(2)
  • 【知识点】Java常用
  • MySQL篇—迁移数据目录到新的本地路径
  • 【FPGA】高云FPGA之IP核的使用->PLL锁相环
  • 程控设备和电脑通信的总线和协议选择
  • 鸿蒙开发-UI-组件导航-Navigation
  • Codeforces Round 922 (Div. 2)(A~D)补题
  • Seata下载与配置、启动
  • 什么是TCP三次握手、四次挥手?
  • C++程序在开机自启和定时器执行时遇到的问题和解决方法
  • R17 extended DRX(eDRX)
  • Debezium发布历史102
  • 探索自然语言处理在改善搜索引擎、语音助手和机器翻译中的应用
  • echarts:获取省、市、区/县、镇的地图数据
  • Java_简单模拟实现ArrayList_学习ArrayList
  • 动手学深度学习(一)深度学习介绍2
  • vmware网络配置,VMware的三种网络模式详解与配置
  • 【Ubuntu】安装hbase
  • ubuntu16.04环境轻松安装和应用opencv4.9.0(基于源码编译)
  • FastBee开源物联网平台2.0开源版发布啦!!!
  • 【NeRF和NLP】一些观察感悟,碎碎念
  • Python程序设计 基础数据类型
  • 浅谈安科瑞智能照明系统在马来西亚国家石油公司项目的应用
  • Java面对对象
  • 代码随想录算法训练营|day24
  • 嵌入式学习日记 16
  • 【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(完结)