创建数据库模型
package models
import (
"github.com/astaxie/beego/orm"
)
type User struct {
Id int
Name string
Profile *Profile `orm:"rel(one)"` // OneToOne relation
Post []*Post `orm:"reverse(many)"` // 设置一对多的反向关系
}
type Profile struct {
Id int
Age int16
User *User `orm:"reverse(one)"` // 设置一对一反向关系(可选)
}
type Post struct {
Id int
Title string
User *User `orm:"rel(fk)"` //设置一对多关系
Tags []*Tag `orm:"rel(m2m)"`
}
type Tag struct {
Id int
Name string
Posts []*Post `orm:"reverse(many)"`
}
func RegisterDB() { //数据库注册方法
//注册 model
orm.RegisterModel(new(User), new(Post), new(Profile), new(Tag))
//注册驱动 这里使用了mysql
orm.RegisterDriver("mysql", orm.DRMySQL)
//注册默认数据库 default为连接名 注:可以创建多个连接 账号:密码@/数据库名?charset=编码
orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8")//密码为空格式
}
初始化代码
package main
import (
"fmt"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
models2 "quickstart/models"
)
func init() {
models2.RegisterDB() //models里面的注册方法 注册数据库
}
func main() {
//查询调试模式
//orm.Debug = true
// 自动建表
orm.RunSyncdb("default", false, true)
// 运行时
o := orm.NewOrm()
o.Using("default") // 默认使用 default,你可以指定为其他数据库
profile := new(models2.Profile)
profile.Age = 30
user := new(models2.User)
user.Profile = profile
user.Name = "slene"
//插入数据
//fmt.Println(o.Insert(profile))
//fmt.Println(o.Insert(user))
//储存查询结果的结构体数组
var users []models2.User
num , err := o.Raw("SELECT * FROM user").QueryRows(&users)
if err == nil && num > 0 {
for i, _ := range users {
fmt.Println(users[i].Name)
}
}
beego.Run()
}
效果图