Beego 数据库建模-查询

 创建数据库模型

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()
}

效果图

猜你喜欢

转载自blog.csdn.net/a13075862862/article/details/82968703