README.md 1.67 KB

beego orm 介绍

快速入门

package main

import (
    "fmt"
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"
)

// 最简单的两个表的定义
type User struct {
    Id   int    `orm:"auto"`
    Name string `orm:"size(100)"`
    orm.Manager
}

type Post struct {
    Id      int    `orm:"auto"`
    User    *User  `orm:"rel(fk)"`
    Title   string `orm:"size(100)"`
    Content string
    orm.Manager
}

func init() {
    // 将表定义注册到 orm 里
    orm.RegisterModel(new(User))
    orm.RegisterModel(new(Post))

    // 链接参数设置
    orm.RegisterDataBase("default", "mysql", "root:root@/my_db?charset=utf8", 30)
}

func main() {
    orm.BootStrap() // 确保在所有 RegisterModel 之后执行

    o := orm.NewOrm()

    var user User
    obj := o.Object(&user)

    // 创建
    user.Name = "slene"
    id, err := obj.Insert()
    fmt.Println(id, err)

    // 更新
    user.Name = "astaxie"
    num, err := obj.Update()
    fmt.Println(num, err)

    // 查询单个
    var u User
    err = o.QueryTable("user").Filter("id", &user).One(&u)
    fmt.Println(u.Id, u.Name, err)

    // 创建 post
    var post Post
    post.Title = "beego orm"
    post.Content = "powerful amazing"
    post.User = &u
    id, err = o.Object(&post).Insert()
    fmt.Println(id, err)

    // 当然,以 map[string]interface{} 形式的数据返回也是允许的
    var maps []orm.Params
    num, err = o.QueryTable("user").Filter("id", &u).Values(&maps)
    fmt.Println(num, err, maps[0])

    // 删除
    num, err = obj.Delete() // 默认,级联删除 user 以及关系存在的 post
    fmt.Println(num, err)
}

详细文档

  1. Model Definition
  2. Custom Fields
  3. Orm
  4. Object
  5. Query
  6. Condition
  7. Raw
  8. Transaction
  9. Faq