当前位置:网站首页>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开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- DistSQL 深度解析:打造动态化的分布式数据库
- The most powerful and most commonly used SQL statements in history
- 系统结构考点之CRAY-1向量处理机
- MySQL compressed package installation, fool teaching
- 系统结构考点之流水线向量点积
- OpenCV笔记(二十):滤波函数——filter2D
- mysql去除重复数据
- 2022.7.27
- cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
- Ningbo Zhongning Pawn will transfer 29.5% of the equity for 2.8338 million yuan, and the owner's equity in 2021 will be 9.6875 million yuan
猜你喜欢
ClickHouse to create a database to create a table view dictionary SQL
MySQL索引常见面试题(2022版)
IDEA使用技巧
@RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解
Navicat new database
【无标题】
MySQL 8.0.29 解压版安装教程(亲测有效)
MySql 5.7.38下载安装教程 ,并实现在Navicat操作MySql
Ningbo Zhongning Pawn will transfer 29.5% of the equity for 2.8338 million yuan, and the owner's equity in 2021 will be 9.6875 million yuan
Rust编译报错:error: linker `cc` not found
随机推荐
IDEA使用技巧
小心你的字典和样板代码
cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
It is enough for MySQL to have this article (disgusting typing 37k words, just for Bojun!!!)
navicat新建数据库
Successfully solved ImportError: always import the name '_validate_lengths'
NEOVIM下载安装与配置
【Untitled】
ClickHouse 数据插入、更新与删除操作 SQL
TCP 连接 三次握手 四次挥手
只会纯硬件,让我有点慌
成功解决ImportError: cannot import name ‘_validate_lengths‘
MySQL 8.0.29 解压版安装教程(亲测有效)
VS2017编译Tars测试工程
【翻译】作为混沌网的LFX门徒的经验
2022.7.27
When Navicat connects to MySQL, it pops up: 1045: Access denied for user 'root'@'localhost'
MySql 5.7.38 download and installation tutorial, and realize the operation of MySql in Navicat
mysql获取近7天,7周,7月,7年日期,根据当前时间获取近7天,7周,7月,7年日期
Chrome 配置samesite=none方式