beego框架长连接mysql_beego orm使用

初始化

创建新beego项目

bee new test

在main.go中开始测试

模型关系

# 外键始终在子表上

#一个用户对应一个简介;一个简介对应一个用户;

one2one:User(子表) -> Profile(主表);one2one:Profile -> User

#一个邮件对应一个用户;一个用户有多个邮件;

one2many:Post(子表) -> User(主表);many2one:User -> Post

#一个邮件对应多个标签;一个标签对应多个邮件;

many2many:Post(子表) -> Tag(主表);many2many:Tag -> Post

新建4个结构体

使用标签`orm:"column(id)`对属性进行标注,用于解析。

标注逻辑外键,自动建表时不会生成外键。

`orm:"rel(one)"` 表示one2one

`orm:"rel(fk)"` 表示one2many

`orm:"rel(m2m)"` 表示many2many

`orm:"reverse(one)"` `orm:"reverse(one)"` 标注反向关系

type User struct {

⇥ Id int `orm:"column(id);auto" description:"id"`

⇥ Name string `orm:"column(name)" description:"name"`

⇥ Profile *Profile `orm:"rel(one)"` // OneToOne relation

⇥ //Posts []*Post `orm:"reverse(many)"` //one2many情况下,不要写reverse

}

type Profile struct {

⇥ Id int `orm:"column(id);auto" description:"id"`

⇥ Age int16 `orm:"column(age)" description:"age"`

⇥ //User *User `orm:"reverse(one)"` // Reverse relationship (optional)

}

type Post struct {

⇥ Id int `orm:"column(id);auto" description:"id"`

⇥ Title string `orm:"column(title)" description:"title"`

⇥ User *User `orm:"rel(fk)"` // OneToMany relation

⇥ Tags []*Tag `orm:"rel(m2m)"` // m2m relation

}

type Tag struct {

⇥ Id int `orm:"column(id);auto" description:"id"`

⇥ Name string `orm:"column(name)" description:"name"`

⇥ Posts []*Post `orm:"reverse(many)"`

}

初始化操作

//ormer

var O orm.Ormer

func init() {

⇥ //注册驱动

⇥ orm.RegisterDriver("mysql", orm.DRMySQL)

⇥ //注册默认数据库

⇥ orm.RegisterDataBase("default", "mysql", "root:root@tcp(192.168.99.100:3308)/test?charset=utf8")

⇥ //注册model

⇥ orm.RegisterModel(new(User), new(Profile), new(Post), new(Tag))

⇥ //自动建表

⇥ orm.RunSyncdb("default", false, true)

⇥ //初始化ormer

⇥ O = orm.NewOrm()

⇥ //初始化数据

⇥ datainit()

}

生成的database信息

执行之前,需要创建数据库test,并配置数据库信息,字符编码全部设置为utf8

执行:注册model,自动建表 即可得到如下信息。

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| post |

| post_tags |

| profile |

| tag |

| user |

+----------------+

5 rows in set (0.00 sec)

mysql> desc post;

+---------+--------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+---------+--------------+------+-----+---------+----------------+

| id | int(11) | NO | PRI | NULL | auto_increment |

| title | varchar(255) | NO | | | |

| user_id | int(11) | NO | | NULL | |

+---------+--------------+------+-----+---------+----------------+

3 rows in set (0.00 sec)<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值