参考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 models import ( "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 main import ( "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表