当前位置:网站首页>Go语学习笔记 - gorm使用 - 事务操作 Web框架Gin(十一)
Go语学习笔记 - gorm使用 - 事务操作 Web框架Gin(十一)
2022-07-30 22:17:00 【web18224617243】
学习笔记,写到哪是哪。
接着上一篇文章:Go语学习笔记 - gorm使用 - gorm处理错误 | Web框架Gin(十)_的博客-CSDN博客
在项目中事务处理,回滚操作还是比较常见的需求。
本文测试一下gorm的事务处理效果。
项目地址:github地址
如果没有事务方面需求,也是可以全局禁用事务的,官方给出的性能提升是30%。
在student_service下新增TestTransaction方法。
方法代码如下:
//测试事务效果
func (t StudentImpl) TestTransaction() rsp.ResponseMsg {
log.Logger.Info("测试事务效果")
_db := mysql.GetDB()
_db.Transaction(func(tx *gorm.DB) error {
tx.Create(&db_entity.Student{
Name: "张飞", Age: 200,
})
var _student db_entity.Student
if _err := tx.Where("del_flag = 1").First(&_student).Error; _err != nil {
return _err
}
fmt.Println(_student)
return nil
})
return *rsp.SuccessMsg("测试成功")
}
简单说明
1、使用Transaction定义需要处理的事务方法,先创建一条数据,再构造一个异常。
2、如果异常了,按照事务处理方式,创建的数据也不会提交。
controller层增加接口代码,如下:
//测试事务效果
func (s StudentController) TestTransaction(context *gin.Context) {
log.Logger.Info("测试事务效果")
_rsp := services.StudentServ.TestTransaction()
context.JSON(http.StatusOK, _rsp)
}
测试效果



可以看出数据并没有插入到表中。
注意
感觉有个地方还是容易出错的,在Transaction定义事务方法的时候,方法内不要在使用db去处理,而是传参tx。不然并不会按照事务方式去处理。
小结
没啥好总结的。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
猜你喜欢

史上最全的Redis基础+进阶项目实战总结笔记

Gxlcms有声小说系统/小说听书系统源码

QT 在父类中添加子类的流程,object tree,

MySQL compressed package installation, fool teaching

MySQL 5.7详细下载安装配置教程

The Road to Ad Monetization for Uni-app Mini Program Apps: Rewarded Video Ads

482-静态库、动态库的制作、使用及区别

【Network Security Column Directory】--Penguin Column Navigation

When Navicat connects to MySQL, it pops up: 1045: Access denied for user 'root'@'localhost'

matlab标量场作图
随机推荐
StoneDB 为何敢称业界唯一开源的 MySQL 原生 HTAP 数据库?
The most powerful and most commonly used SQL statements in history
通过社交媒体建立个人IP的 5 种行之有效的策略
@RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解
宁波中宁典当转让29.5%股权为283.38万元,2021年所有者权益为968.75万元
折叠旧版应用程序
QT开发简介、命名规范、signal&slot信号槽
TransGAN code reproduction - Jiutian Bisheng Platform
cnpm安装步骤
Navigation Bar----Personal Center Dropdown
Solve the problem of centos8 MySQL password ERROR 1820 (HY000) You must reset your password using the ALTER USER
cookie和session区别
MySQL compressed package installation, fool teaching
【云驻共创】HCSD大咖直播–就业指南
Qt 同时生成动态库和静态库
2022.7.27
MYSQL JDBC图书管理系统
TransGAN代码复现—九天毕昇平台
qt使用动态库(DLL)
VS2017编译Tars测试工程