Orm
ORM 的例子在这里(opens new window)
Beego 的 ORM 被设计成为两种:
- 普通的
Orm
实例:这种实例是无状态的,因此你应该尽可能保持一个数据库只有一个实例。当然,即便每次你都创建新的实例,问题也不大,只是没有必要而已; TxOrm
:这是启动事务之后得到的Orm
对象,它只能被用于事务内,提交或者回滚之后就要丢弃,不能复用。每一个事务都需要创建一个新的实例;
快速开始
这是一个最简单的 ORM 例子:
import (
"github.com/beego/beego/v2/client/orm"
// don't forget this
_ "github.com/go-sql-driver/mysql"
)
// User -
type User struct {
ID int `orm:"column(id)"`
Name string `orm:"column(name)"`
}
func init() {
// need to register models in init
orm.RegisterModel(new(User))
// need to register default database
orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/beego?charset=utf8")
}
func main() {
// automatically build table
orm.RunSyncdb("default", false, true)
// create orm object
o := orm.NewOrm()
// data
user := new(User)
user.Name = "mike"
// insert data
o.Insert(user)
}
总体来说,可以分成以下几步:
需要注意的是,一定要根据自己使用的数据库来匿名引入驱动,例如引入 "github.com/go-sql-driver/mysql"
调试查询日志
在开发环境下,可以设置输出 DEBUG 的 SQL 语句:
func main() {
orm.Debug = true
开启后将会输出所有查询语句,包括执行、准备、事务等。注意,在生产环境不应该开启这个选项,因为输出日志会严重影响性能。