go-gf框架两个表以事务方式写入示例
下面是对每一行代码的中文解释:
// 创建数据库连接对象
var tx gdb.TX
这行代码声明了一个名为tx的变量,类型为gdb.TX,表示数据库事务对象。
// 开启事务
if tx, err = g.DB().Ctx(ctx).Begin(ctx); err == nil {
这行代码通过在数据库连接(g.DB())上调用Begin方法以给定的上下文(ctx)开始一个事务。如果没有错误(err == nil),则将返回的事务对象赋值给变量tx。
// 获取当前时间
CurrentTime := gtime.Now()
这行代码使用gtime.Now()函数获取当前时间,并将其赋值给变量CurrentTime。
// 写支付记录
_, err4 := dao.PayTradeOrder.Ctx(ctx).TX(tx).Insert(appdo.PayTradeOrder{// 支付记录字段...
})
这行代码将一个新的支付记录插入数据库。它使用dao.PayTradeOrder.Ctx(ctx).TX(tx)指定了上下文和事务对象,然后使用Insert方法将appdo.PayTradeOrder结构体的字段插入数据库。
// 写套餐订单记录
_, err5 := systemdao.UserBuySetMeal.Ctx(ctx).TX(tx).Insert(do.UserBuySetMeal{// 套餐订单记录字段...
})
这行代码将一条新的套餐订单记录插入数据库。它使用systemdao.UserBuySetMeal.Ctx(ctx).TX(tx)指定了上下文和事务对象,然后使用Insert方法将do.UserBuySetMeal结构体的字段插入数据库。
// 提交事务
if err := tx.Commit(); err != nil {// 处理提交事务错误liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:提交事务失败"), "创建下单错误:提交事务失败")return
}
这行代码提交事务。如果提交事务发生错误,会通过liberr.ErrIsNil函数处理错误。
// 打印结果
fmt.Println("事务操作完成")
这行代码打印结果信息,输出"事务操作完成"。
} else {// 处理开启事务错误liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:事务操作失败"), "创建下单错误:事务操作失败")
}
这行代码处理开启事务错误,通过liberr.ErrIsNil函数处理错误。
完整代码 供参考
// 创建数据库连接对象var tx gdb.TX// 开启事务if tx, err = g.DB().Ctx(ctx).Begin(ctx); err == nil {// 获取当前时间CurrentTime := gtime.Now()// 写支付记录_, err4 := dao.PayTradeOrder.Ctx(ctx).TX(tx).Insert(appdo.PayTradeOrder{OrderNo: "2023245231231", // 订单号//写入其他数据字段})if err4 != nil {// 回滚事务err := tx.Rollback()if err != nil {liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:创建支付数据回滚事务错误"), "创建下单错误:创建支付数据回滚事务错误")return}// 处理错误liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:创建支付数据错误"), "创建下单错误:创建支付数据错误")return}// 写套餐订单记录_, err5 := systemdao.UserBuySetMeal.Ctx(ctx).TX(tx).Insert(do.UserBuySetMeal{UserId: userid, // 用户id//写入其他数据字段})if err5 != nil {// 回滚事务err := tx.Rollback()if err != nil {liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:创建套餐订单回滚事务数据错误"), "创建下单错误:创建套餐订单回滚事务数据错误")return}// 处理错误liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:创建套餐订单数据错误"), "创建下单错误:创建套餐订单数据错误")return}// 提交事务if err := tx.Commit(); err != nil {// 处理提交事务错误liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:提交事务失败"), "创建下单错误:提交事务失败")return}// 打印结果fmt.Println("事务操作完成")} else {// 处理开启事务错误liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:事务操作失败"), "创建下单错误:事务操作失败")}相关文章:
go-gf框架两个表以事务方式写入示例
下面是对每一行代码的中文解释: // 创建数据库连接对象 var tx gdb.TX这行代码声明了一个名为tx的变量,类型为gdb.TX,表示数据库事务对象。 // 开启事务 if tx, err g.DB().Ctx(ctx).Begin(ctx); err nil {这行代码通过在数据库连接&…...
2023-5-31第三十一天
conform顺从,遵从,一致 squeeze挤压 proprietary专卖权,专利的,所有的 endeavor努力,尽力 comprise由...组成,包含 compose组成,写作 compact小型的 consult咨询,查阅 expan…...
什么是MQTT?mqtt协议和http协议区别
摘要: 什么是MQTT?MQTT(Message Queuing Telemetry Transport)译为:消息队列遥测传输,是一种轻量级的通讯协议,用于在网络上传输消息。MQTT 最初由 IBM 发布,后来成为 OASIS…...
平台使用篇 | 批处理(bat)脚本使用教程(四)
导读 一个开启多机软件在环仿真的批处理文件 (对应卓面RflyTools文件夹中SITLRun快捷方式),双击它,输入想要生成的飞机数量,即可生成多机软件在环仿真,等待RflySim3D显示3DFixed 4/4,然后可通过QGC控制飞机起飞。运行…...
接口的讲解
在这里之前我想童鞋们都学习过了springmvc。mybatis-plus。Springboot等一些框架 那么下面我们就整合这些框架 我们通过写crud这些接口 写接口的第一步就是引入pom文件 在pom文件里引入一下几种依赖 引入父级工程 thymeleaf导入模版工具类 SpringMVCjar包文件 热部署工具 l…...
G0第21章 :gin框架介绍、RESTful API、Gin渲染
G0第21章 :gin框架 01 内容介绍 https://gin-gonic.com/zh-cn/docs/ web本质 Web是基于HTTP协议进行交互的应用网络Web就是通过使用浏览器/APP访问的各种资源 package mainimport ("fmt""net/http" )func sayHello(w http.ResponseWriter, r…...
python list,dict操作
一、list 操作 Python中的列表是一种有序、可变的数据类型,可以存储任意类型的数据。以下是Python中常用的列表操作: 创建列表:使用[]或list()函数创建一个空列表,或者使用[value1, value2, ...]创建一个包含初始值的列表。 访问…...
我有一个页面a,在页面a中调用了一个组件,然后组件中要切换页面a的一块区域,该怎么实现?
你可以在组件中使用路由的编程式导航,通过访问路由实例来切换页面a的对应区域。具体来说,你可以先在页面a中设置一个具有唯一标识的占位符元素,然后在组件中通过路由实例访问这个元素并修改其内容或样式来实现区域切换。路由的编程式导航可以…...
ChatGPT唤醒AI游戏:AIGC持续走深,游戏或成AI最佳抓手
随着人工智能技术的不断发展,AI在游戏行业的应用日益深入。本文将详细探讨ChatGPT在AI游戏领域的应用,以及游戏如何成为AI技术的最佳抓手。让我们一起探讨这个有趣且充满潜力的领域。 一、引言 人工智能在各行各业都取得了巨大的成功,而游戏…...
远程服务和web服务和前端,三方通过socket和websocket进行双向通信传输数据
1. 什么是socket? 在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 2. 什么是websocket?…...
Linux 网络基础(2)应用层(http/https协议、请求格式、响应格式、session、cookie、加密传输)
说明:网络基础2讲解的是应用层的典型协议, 通过对于典型协议的理解,来体会数据的网络传输的软件层面的流程与原理。 面试中网络通信相关问题占了很大的比重,而网络通信相关的问题大多都集中在网络基础2这个单元中 下面是应用层的位…...
解决sshfs挂载报错
使用ssh命令和sshfs命令报错 read: Connection reset by peer rootjiangcheng01:~/common/remote# sshfs -o allow_other htrdxxx.xxx.xxx.xxx:/home/htrd /root/common/remote/dev01 read: Connection reset by peer 报错问题排查,追加命令 -o debug -o sshf s_d…...
由于过多的连接错误而被 MySQL服务器 阻止
Caused by: com.mysql.cj.exceptions.CJException: null, message from server: "Host 10.105.***.** is blocked because of many connection errors; unblock with mysqladmin flush-hosts" 这个错误可能表示当您尝试使用 IP 地址为 "10.105.***.**" 的…...
Go语言实现JDBC
Go语言操作数据库 Go语言提供了关于数据库的操作,包下有sql/driver 该包用来定义操作数据库的接口,这保证了无论使用哪种数据库,操作方式都是相同的; 准备工作: 下载驱动 需要在代码所在文件夹下执行相应的命令 go get github.com/go-sql-driver/mys…...
ubuntu修改环境变量的几种方法
ubuntu修改环境变量的几种方法 有多种方法可以修改Ubuntu系统的环境变量,包括: 临时修改环境变量:在终端中使用export命令可以临时修改环境变量。例如,要将PATH环境变量添加到新目录,可以运行以下命令: …...
基于html+css的图展示95
准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…...
数据库基础——5.运算符
这篇文章我们来讲一下SQL语句中的运算符操作。 说点题外话:SQL本质上也是一种计算机语言,和C,java一样的,只不过SQL是用来操作数据库的。在C,java中也有运算符,这两种语言中的运算符和数学中的运算符差距不…...
JMeter 性能测试基本过程及示例
jmeter 为性能测试提供了一下特色: 2023年最新出炉性能测试教程,真实企业性能压测全流程项目实战训练大合集!_哔哩哔哩_bilibili2023年最新出炉性能测试教程,真实企业性能压测全流程项目实战训练大合集!共计11条视频&…...
漏洞复现 CVE-2018-2894 weblogic文件上传
vulhub weblogic CVE-2018-2894 1、 搭建好靶场,按提示访问 http://192.168.137.157:7001/console 按照给出的文档,会查看容器的日志,找到管理员用户名/密码为 weblogic / h3VCmK2L,暂时用不到,不需要登录 2、未授权…...
二叉树:填充每个节点的下一个右侧节点指针(java)
leetcode116:填充每个节点的下一个右侧节点指针 leetcode原题链接:题目描述递归解法一递归方法二(效率更高)二叉树专题 leetcode原题链接: 116题:填充每个节点的下一个右侧节点指针 题目描述 给定一个 完美二叉树 &a…...
MCP Server生产级配置:Playwright与LLM集成的避坑指南
1. 这不是又一个“Playwright入门教程”,而是一份能直接塞进CI流水线的MCP Server生产级配置实录你有没有遇到过这样的场景:团队刚决定用AI驱动自动化测试,技术选型会上大家一致看好Playwright MCP(Model Context Protocol&#…...
第三幕 御酒掺土,江山为祭
金牌监制,您这一刀改得极其精准,直接把整部戏的格局从“江湖恩怨”拉升到了“家国博弈”的层面!确实,如果只谈慈悲,唐三藏只是个高僧;但如果加上李世民的重托和大唐的国运,他就是一个背负着沉重…...
CANN-昇腾NPU-RAG推理-检索增强生成怎么部署
RAG(Retrieval-Augmented Generation)是 LLM 知识库的组合:先检索相关文档,再让 LLM 基于文档回答。昇腾NPU 上部署 RAG 需要两个组件:Embedding 模型(做向量检索)和 LLM(做生成&am…...
从分立逻辑到单片机:基于ATmega8的MIDI通道分析仪设计与实现
1. 项目概述:从分立逻辑到单片机的MIDI通道分析仪进化史二十年前,当我在《Elektor》杂志上发表第一版MIDI通道分析仪时,整个数字音乐世界还处于一个相当“硬核”的阶段。那个版本的设计,用今天的话来说,简直就是一场“…...
Burp Suite证书安装全解:HTTPS抓包失败的根源与跨平台命令行方案
1. 为什么必须亲手安装Burp Suite证书——不是“点一下就完事”的操作很多人第一次在手机或测试设备上配置Burp Suite代理时,会下意识认为:只要把电脑上的Burp监听地址填进Wi-Fi代理设置,再用浏览器访问http://burp,点击那个绿色的…...
Office RibbonX Editor:简单三步打造你的专属Office界面
Office RibbonX Editor:简单三步打造你的专属Office界面 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbonx-edit…...
特定任务需求场景下的过约束并联机构构型设计与控制方法【附代码】
✨ 长期致力于曲面加工、构型综合、运动学和动力学建模、性能评价、多目标优化、滑模控制、鲁棒控制、视觉传感技术研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (…...
Unity项目DrawCall降不下来?试试用Mesh Baker合并贴图集,保姆级图文教程
Unity性能优化实战:用Mesh Baker合并贴图集降低DrawCall全流程解析当你的Unity项目帧率开始卡顿,Profiler里DrawCall数字居高不下时,合并贴图集往往是解决问题的关键一步。本文将以一个实际项目为例,带你从零开始使用Mesh Baker的…...
基于Max78000与规则引导的音频数据集构建:边缘AI声音识别实战
1. 项目概述:当边缘AI遇见棕榈树里的“窃听者”在边缘计算和物联网设备大行其道的今天,我们常常面临一个核心矛盾:一方面,我们希望设备足够“聪明”,能实时识别并响应特定的声音模式,比如工厂里高压阀门的异…...
Hermes Agent 框架如何对接 Taotoken 作为自定义模型供应商并配置环境变量
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent 框架如何对接 Taotoken 作为自定义模型供应商并配置环境变量 Hermes Agent 是一个流行的 AI 代理开发框架࿰…...
