Spring实现事务(一)

.

在这里插入图片描述

什么是事务

事务是⼀组操作的集合, 是⼀个不可分割的操作
在我们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&useSSL
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
  configuration: # 配置打印 MyBatis⽇志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-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;
}

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

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

相关推荐

  1. Spring 事务实现

    2024-02-02 11:32:03       39 阅读
  2. Spring系列:基于Spring-Jdbc实现事务

    2024-02-02 11:32:03       27 阅读
  3. 60.Spring事务实现基本原理

    2024-02-02 11:32:03       34 阅读
  4. spring-websocket实现

    2024-02-02 11:32:03       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-02 11:32:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-02 11:32:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-02 11:32:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-02 11:32:03       18 阅读

热门阅读

  1. 使用Eigen3计算旋转平移缩放矩阵

    2024-02-02 11:32:03       34 阅读
  2. 【Node系列】创建第一个服务器应用

    2024-02-02 11:32:03       33 阅读
  3. day9笔记

    2024-02-02 11:32:03       31 阅读
  4. Golang防止注入常用方法

    2024-02-02 11:32:03       30 阅读
  5. SpringBoot整理-微服务

    2024-02-02 11:32:03       31 阅读
  6. 为什么golang不支持可重入锁呢?

    2024-02-02 11:32:03       35 阅读
  7. 爬虫学习:下厨房的菜谱搜索

    2024-02-02 11:32:03       32 阅读
  8. listagg、xmlagg、group_concat()函数用法

    2024-02-02 11:32:03       36 阅读