1. 程式人生 > >beego——事務處理和命令模式

beego——事務處理和命令模式

1.事務處理

ORM 可以簡單的進行事務操作。

o := NewOrm()
err := o.Begin()
// 事務處理過程
...
...
// 此過程中的所有使用 o Ormer 物件的查詢都在事務處理範圍內
if SomeError {
    err = o.Rollback()
} else {
    err = o.Commit()
}

 

2.命令模式

註冊模型與資料庫以後,呼叫 RunCommand 執行 orm 命令。

func main() {
    // orm.RegisterModel...
    // orm.RegisterDataBase...
    ...
    orm.RunCommand()
}
go build main.go
./main orm
# 直接執行可以顯示幫助
# 如果你的程式可以支援的話,直接執行 go run main.go orm 也是一樣的效果

  

自動建表

./main orm syncdb -h
Usage of orm command: syncdb:
  -db="default": DataBase alias name
  -force=false: drop tables before create
  -v=false: verbose info

使用 -force=1 可以 drop table 後再建表

使用 -v 可以檢視執行的 sql 語句

 

在程式中直接呼叫自動建表:

// 資料庫別名
name := "default"

// drop table 後再建表
force := true

// 列印執行過程
verbose := true

// 遇到錯誤立即返回
err := orm.RunSyncdb(name, force, verbose)
if err != nil {
    fmt.Println(err)
}

自動建表功能在非 force 模式下,是會自動建立新增加的欄位的。也會建立新增加的索引。

對於改動過的舊欄位,舊索引,需要使用者自行進行處理。

列印建表SQL

./main orm sqlall -h
Usage of orm command: syncdb:
  -db="default": DataBase alias name

預設使用別名為 default 的資料庫