這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
參考beego原文:http://beego.me/docs/mvc/model/orm.md#main.go
beego ORM 是一個強大的 Go 語言 ORM 架構,orm模組主要是處理MVC中的M(models)。
首先以bee工具建立一工程名為:beegoorm,修改的檔案為 beegoorm/main.go 和 beegoorm/models/models.go(僅2個檔案)
beegoorm/models/models.go
package modelsimport ( "github.com/astaxie/beego/orm")type User struct { Id int Name string Profile *Profile `orm:"rel(one)"` // OneToOne relation}type Profile struct { Id int Age int16 User *User `orm:"reverse(one)"` // 設定反向關係(可選)}func init() { // 需要在 init 中註冊定義的 model orm.RegisterModel(new(User), new(Profile))}
beegoorm/main.go
package mainimport ( "beegoorm/models" "fmt" "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "beegoorm/routers" _ "github.com/go-sql-driver/mysql")func init() { // 註冊驅動 orm.RegisterDriver("mysql", orm.DR_MySQL) // 註冊預設資料庫 // 我的mysql的root使用者密碼為tom,打算把資料表建立在名為test資料庫裡 // 備忘:此處第一個參數必須設定為“default”(因為我現在只有一個資料庫),否則編譯報錯說:必須有一個註冊DB的別名為 default orm.RegisterDataBase("default", "mysql", "root:tom@/test?charset=utf8")}func main() { // 開啟 orm 偵錯模式:開發過程中建議開啟,release時需要關閉 orm.Debug = true // 自動建表 orm.RunSyncdb("default", false, true) // 建立一個 ormer 對象 o := orm.NewOrm() o.Using("default") perfile := new(models.Profile) perfile.Age = 30 user := new(models.User) user.Name = "tom" user.Profile = perfile // insert o.Insert(perfile) o.Insert(user) o.Insert(perfile) o.Insert(user) o.Insert(perfile) o.Insert(user) // update user.Name = "hezhixiong" num, err := o.Update(user) fmt.Printf("NUM: %d, ERR: %v\n", num, err) // delete o.Delete(&models.User{Id: 2}) beego.Run()}
資料庫建表及資料增刪改的結果如下:
資料庫名:test
資料表:user,profile
user表 profile表