• go-gf框架两个表以事务方式写入示例


    下面是对每一行代码的中文解释:

    // 创建数据库连接对象
    var tx gdb.TX
    
    • 1
    • 2

    这行代码声明了一个名为tx的变量,类型为gdb.TX,表示数据库事务对象。

    // 开启事务
    if tx, err = g.DB().Ctx(ctx).Begin(ctx); err == nil {
    
    • 1
    • 2

    这行代码通过在数据库连接(g.DB())上调用Begin方法以给定的上下文(ctx)开始一个事务。如果没有错误(err == nil),则将返回的事务对象赋值给变量tx

    // 获取当前时间
    CurrentTime := gtime.Now()
    
    • 1
    • 2

    这行代码使用gtime.Now()函数获取当前时间,并将其赋值给变量CurrentTime

    // 写支付记录
    _, err4 := dao.PayTradeOrder.Ctx(ctx).TX(tx).Insert(appdo.PayTradeOrder{
        // 支付记录字段...
    })
    
    • 1
    • 2
    • 3
    • 4

    这行代码将一个新的支付记录插入数据库。它使用dao.PayTradeOrder.Ctx(ctx).TX(tx)指定了上下文和事务对象,然后使用Insert方法将appdo.PayTradeOrder结构体的字段插入数据库。

    // 写套餐订单记录
    _, err5 := systemdao.UserBuySetMeal.Ctx(ctx).TX(tx).Insert(do.UserBuySetMeal{
        // 套餐订单记录字段...
    })
    
    • 1
    • 2
    • 3
    • 4

    这行代码将一条新的套餐订单记录插入数据库。它使用systemdao.UserBuySetMeal.Ctx(ctx).TX(tx)指定了上下文和事务对象,然后使用Insert方法将do.UserBuySetMeal结构体的字段插入数据库。

    // 提交事务
    if err := tx.Commit(); err != nil {
        // 处理提交事务错误
        liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:提交事务失败"), "创建下单错误:提交事务失败")
        return
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这行代码提交事务。如果提交事务发生错误,会通过liberr.ErrIsNil函数处理错误。

    // 打印结果
    fmt.Println("事务操作完成")
    
    • 1
    • 2

    这行代码打印结果信息,输出"事务操作完成"。

    } else {
        // 处理开启事务错误
        liberr.ErrIsNil(context.Background(), errors.New("创建下单错误:事务操作失败"), "创建下单错误:事务操作失败")
    }
    
    • 1
    • 2
    • 3
    • 4

    这行代码处理开启事务错误,通过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("创建下单错误:事务操作失败"), "创建下单错误:事务操作失败")
    			}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
  • 相关阅读:
    分享Markdown编写文档的技巧
    更改idea的JDK版本
    网站如何部署到阿里云服务器教程
    Postgresql源码(134)优化器针对volatile函数的排序优化分析
    Java Servlet关键点详解
    野指针和悬空指针
    详细学习Mybatis(1)
    CompletableFuture详解
    【optuna】将实验结果保存为excel
    Python最重要的知识:字符串教程
  • 原文地址:https://blog.csdn.net/weixin_44646977/article/details/130854625