springboot mybatis手动事务

创建springboot项目

搭建最简单的SpringBoot项目-CSDN博客

引入mybatis和数据库依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>provided</scope></dependency>
</dependencies>

创建springboot配置文件

spring:datasource:url: jdbc:mysql://192.168.30.128:3306/wdusername: rootpassword: 4752mybatis:mapper-locations: classpath:mapper/*Mapper.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

创建启动类

package com.wd;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringbootMybatisApp {public static void main(String[] args) {SpringApplication.run(SpringbootMybatisApp.class, args);}
}

创建数据库实体

package com.wd.pojo;import lombok.Data;import java.util.Date;@Data
public class User {private int id;private String name;private String addr;private Date updateTime;
}

创建Mapper

package com.wd.mapper;import com.wd.pojo.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper
public interface UserMapper {int addUser(User user);}

创建mapper配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.wd.mapper.UserMapper"><insert id="addUser">insert into tbl_user (id, name, addr, update_time) values (#{id}, #{name}, #{addr}, #{updateTime})</insert></mapper>

创建controller

package com.wd.controller;import com.wd.mapper.UserMapper;
import com.wd.pojo.User;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.web.bind.annotation.*;import java.util.Date;@RestController
public class UserController {private final UserMapper userMapper;private final PlatformTransactionManager transactionManager;public UserController(UserMapper userMapper, PlatformTransactionManager platformTransactionManager) {this.userMapper = userMapper;this.transactionManager = platformTransactionManager;}@GetMapping(value = "testTransaction")public String testTransaction() {DefaultTransactionDefinition transDefinition = new DefaultTransactionDefinition();transDefinition.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);TransactionStatus transStatus = transactionManager.getTransaction(transDefinition);try {User user = new User();user.setId(1);user.setName("aaa");user.setUpdateTime(new Date());userMapper.addUser(user);int i =0;int i1 = 1 / i;transactionManager.commit(transStatus);} catch (Exception e) {e.printStackTrace();transactionManager.rollback(transStatus);}return "success";}}

测试手动事务

请求接口之后,发现并没有新插入数据

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

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

相关文章

米贸搜|Facebook广告投放必须要懂的十大基础数据指标

一&#xff1a;覆盖人数&#xff08;Reach&#xff09;-至少查看广告一次的用户数量 覆盖人数与展示次数不同&#xff0c;后者可能存在同一用户多次浏览广告的情况。 二&#xff1a;展示次数&#xff08;Impressions&#xff09;-广告的浏览次数 展示次数是指广告首次出现在…

java设计模式学习之【代理模式】

文章目录 引言代理模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用图片加载示例代码地址 引言 在现实生活中&#xff0c;我们经常使用代理来处理我们不想直接参与或无法直接参与的事务&#xff0c;例如&#xff0c;使用律师来代表法庭上的案件。在软件开发…

Golang 切片相关笔记

文章目录 关于切片的扩容问题切片的创建切片的扩容切片的缩容 关于切片的扩容问题 如果在程序中出现下列提示&#xff1a;说明你建立的切片容量不够&#xff0c;超出索引&#xff1a; panic: runtime error: index out of range [0] with length 0 切片的创建 Go 语言中的切片是…

JS实现日历表

有需要的可以用一下&#xff0c;这是一个简单的demo. HTML&#xff1a; <table><thead><tr><th colspan"2"><span class"left"></span></th><th colspan"3"><span class"time"&g…

湖南开放大学形成性考核 平时作业 统一资料 参考

卷代号&#xff1a;1282 社会学概论&#xff08;本&#xff09; 参考试题 一、单项选择题&#xff08;在各题的备选答案中&#xff0c;只有1项是正确的&#xff0c;请将正确答案的序号&#xff0c;填写在题中的括号内。每题1分&#xff0c;共10分&#xff09; 1.从20世纪30年代…

【快速应用开发】看看RedwoodJS

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

vue3+vite4中使用svg,使用iconfont-svg图标

记录一下vue3中如何使用svg图标&#xff0c;vue2中大家常用iconfont字体图标&#xff0c;现在vue3大家都又推荐svg的方式使用图表&#xff0c;包括elementplus组件库也变成使用svg方式引用图标。 1、创建svg组件 components/IconSvg.vue <template><svg class"…

保障事务隔离级别的关键措施

目录 引言 1. 锁机制的应用 2. 多版本并发控制&#xff08;MVCC&#xff09;的实现 3. 事务日志的记录与恢复 4. 数据库引擎的实现策略 结论 引言 事务隔离级别是数据库管理系统&#xff08;DBMS&#xff09;中的一个关键概念&#xff0c;用于控制并发事务之间的可见性。…

爱名网被评为“最佳安全保障注册服务机构”

12月12日&#xff0c;由中国互联网络信息中心主办&#xff0c;中国科学院计算机网络信息中心、中国工业互联网研究院、中国互联网协会联合主办&#xff0c;人民邮电报社承办的第四届中国互联网基础资源大会&#xff08;CNIRC&#xff09;在北京举办。 在本届大会上&#xff0c…

网络镜像 -- 本地端口镜像

网络镜像 网络镜像技术允许复制和记录在计算机网络上传输的数据流量&#xff0c;可以将交换机中一个端口的流量复制到另一个端口。 网络镜像广泛用于抓包监控。 用一个场景来举例&#xff1a; 如图&#xff0c;PC1、2、3分别是三台主机&#xff0c;与Switch交换机对应端口…

Mac 如何删除文件及文件夹?可以尝试使用终端进行删除

MacOS 是 Mac 电脑采用的操作系统&#xff0c;你知道 Mac 如何删除文件吗&#xff1f;除了直接将文件或者文件夹拖入废纸篓之外&#xff0c;我们还可以采用终端命令的办法去删除文件&#xff0c;本文为大家总结了 Mac 删除文件方法。 为何使用命令行删除文件 在使用 Mac 电脑…

训练效率提升40倍!开源图片生3D模型,Stable Zero123来啦

12月14日&#xff0c;著名生成式AI开源平台Stability.ai在官网开源了&#xff0c;图片生成高质量3D模型——Stable Zero123。 Stable Zero123是基于今年3月&#xff0c;丰田研究院和哥伦比亚大学联合开源的Zero123模型开发而成。主要通过更改渲染数据集和分数蒸馏对模型进行了…

【复杂gRPC之Java调用go】

1 注意点 一般上来说如果java调用java的话&#xff0c;我们可以使用springcloud来做&#xff0c;而面对这种跨语言的情况下&#xff0c;gRPC就展现出了他的优势。 代码放在这了&#xff0c;请结合前面的go服务器端一起使用 https://gitee.com/guo-zonghao/java-client-grpc /…

实战章节:在Linux上部署各类软件

详细资料见文章的资源绑定 一、前言 1.1 为什么学习各类软件在Linux上的部署 在前面&#xff0c;我们学习了许多的Linux命令和高级技巧&#xff0c;这些知识点比较零散&#xff0c;同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用&#xff0c;但是并没…

算法-只出现一次的数字集合

前言 仅记录学习笔记&#xff0c;如有错误欢迎指正。 题目 记录一道面试过的题目 题目如下&#xff1a; 给定一个数组&#xff0c;内容为1-n的数字&#xff0c;其中每个数字只会出现一次或者多次&#xff0c;请在时间复杂度O(n),空间复杂度O(1)的条件下找出所有出现一次的数…

事务隔离级别:保障数据库并发事务的一致性与性能

目录 引言 1. 事务隔离级别概述 2. 读未提交隔离级别 3. 读已提交隔离级别 4. 可重复读隔离级别 5. 串行化隔离级别 6. 保障事务隔离级别的机制 7. 如何选择合适的隔离级别 8. 结语 引言 在数据库管理系统&#xff08;DBMS&#xff09;中&#xff0c;事务隔离级别是一…

Redisson分布式锁原理分析

1.Redisson实现分布式锁 在分布式系统中&#xff0c;涉及到多个实例对同一资源加锁的情况&#xff0c;传统的synchronized、ReentrantLock等单进程加锁的API就不再适用&#xff0c;此时就需要使用分布式锁来保证多服务之间加锁的安全性。 常见的分布式锁的实现方式有&#xff…

【SpringBoot2】idea 上 gradle build 报 lombok 注释类有 “错误: 找不到符号“

jwensh2023.12.11 问题 idea springboot 2.7 gradle 7.6 的 build.gradle 中引入了 lombok implementation group: org.projectlombok, name: lombok, version: 1.18.2 在 pojo 上使用 Data、AllArgsConstructor、NoArgsConstructor Data AllArgsConstructor NoArgsConstruc…

PyTorch 模型训练性能大揭秘:从基础到高级技巧一网打尽!

PyTorch 是一个开源的 Python 机器学习库&#xff0c;基于Torch&#xff0c;用于自然语言处理等应用程序。 PyTorch既可以看作加入了GPU支持的numpy&#xff0c;也可以看成一个拥有自动求导功能的强大的深度神经网络&#xff0c;同时它也是大模型开发的首选工具。 《PyTorch模…

不用再找,这是大模型 LLM 微调经验最全总结

大家好&#xff0c;今天对大模型微调项目代码进行了重构&#xff0c;支持ChatGLM和ChatGLM2模型微调的切换&#xff0c;增加了代码的可读性&#xff0c;并且支持Freeze方法、Lora方法、P-Tuning方法、「全量参数方法」 微调。 PS&#xff1a;在对Chat类模型进行SFT时&#xff…