Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 63.6MB ·虚拟内存 1301.0MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
通常在一些订单交易业务都会涉及多个表的更新/插入操作,这个时候就需要数据库事务处理。
beego orm 处理 mysql 事务有两种方式:手动处理事务、自动处理事务。
// 创建orm对象 o := orm.NewOrm() // 开始事务 tx, err := o.Begin() // 开始执行各种sql语句,更新数据库,这里可以使用beego orm支持任何一种方式操作数据库 // 例如,更新订单状态 _, err1 := tx.QueryTable("orders").Filter("Id", 1001).Update(orm.Params{ "Status": "SUCCESS", }) // 给用户加积分 _, err2 := tx.Raw("update users set points = points + ? where username=?", "tizi365", 100).Exec() // 检测事务执行状态 if err1 != nil || err2 != nil { // 如果执行失败,回滚事务 tx.Rollback() } else { // 任务执行成功,提交事务 tx.Commit() }
在一个闭包函数内执行事务处理,如果函数返回error则回滚事务。
// 创建orm对象 o := orm.NewOrm() // 在闭包内执行事务处理 err := o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error { // 准备数据 user := new(User) user.Name = "test_transaction" // 插入数据 // 使用txOrm执行SQL _, e := txOrm.Insert(user) return e })
beego 视图模板:beego 的视图(view)模板引擎是基于 Go 原生的模板库(html/template)进行开发的,因此在开始编写 view 模板代码之前需要先学习下 Go 内置模板引擎的语法。beego 模板,默认支持 tpl 和 html 的后缀名。