Orm

ORM 的例子在这里(opens new window)

Beego 的 ORM 被设计成为两种:

  • 普通的 Orm 实例:这种实例是无状态的,因此你应该尽可能保持一个数据库只有一个实例。当然,即便每次你都创建新的实例,问题也不大,只是没有必要而已;
  • TxOrm:这是启动事务之后得到的Orm对象,它只能被用于事务内,提交或者回滚之后就要丢弃,不能复用。每一个事务都需要创建一个新的实例;

快速开始

这是一个最简单的 ORM 例子:

  1. import (
  2. "github.com/beego/beego/v2/client/orm"
  3. // don't forget this
  4. _ "github.com/go-sql-driver/mysql"
  5. )
  6. // User -
  7. type User struct {
  8. ID int `orm:"column(id)"`
  9. Name string `orm:"column(name)"`
  10. }
  11. func init() {
  12. // need to register models in init
  13. orm.RegisterModel(new(User))
  14. // need to register default database
  15. orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/beego?charset=utf8")
  16. }
  17. func main() {
  18. // automatically build table
  19. orm.RunSyncdb("default", false, true)
  20. // create orm object
  21. o := orm.NewOrm()
  22. // data
  23. user := new(User)
  24. user.Name = "mike"
  25. // insert data
  26. o.Insert(user)
  27. }

总体来说,可以分成以下几步:

需要注意的是,一定要根据自己使用的数据库来匿名引入驱动,例如引入 "github.com/go-sql-driver/mysql"

调试查询日志

在开发环境下,可以设置输出 DEBUG 的 SQL 语句:

  1. func main() {
  2. orm.Debug = true

开启后将会输出所有查询语句,包括执行、准备、事务等。注意,在生产环境不应该开启这个选项,因为输出日志会严重影响性能。