Golang beego/orm
code:
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)"`
}
func init() {
orm.RegisterModel(new(User))
orm.RegisterDataBase("default", "mysql", "username:pwd@tcp(***.***.***.***:3306)/pomelo?charset=utf8",30)
orm.RunSyncdb("default", false, true)
}
func main() {
o := orm.NewOrm()
user := User{ Name: "Michael"}
id, err := o.Insert(&user)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println("id=", id);
}
package main
import (
"fmt"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
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 init() {
orm.RegisterModel(new(User), new(Post), new(Profile), new(Tag))
orm.RegisterDataBase("default", "mysql", "username:pwd@tcp(xxx.xxx.xxx.xxx:3306)/pomelo?charset=utf8",30)
orm.RunSyncdb("default", false, true)
}
func main() {
o := orm.NewOrm()
profile := new(Profile)
profile.Age = 30
user := new(User)
user.Profile = profile
user.Name = "slene"
fmt.Println(o.Insert(profile))
fmt.Println(o.Insert(user))
}

log:
create table `user`
-- --------------------------------------------------
-- Table Structure for `main.User`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `user` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(255) NOT NULL DEFAULT '' ,
`profile_id` integer NOT NULL UNIQUE
) ENGINE=InnoDB;
create table `post`
-- --------------------------------------------------
-- Table Structure for `main.Post`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `post` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`title` varchar(255) NOT NULL DEFAULT '' ,
`user_id` integer NOT NULL
) ENGINE=InnoDB;
create table `profile`
-- --------------------------------------------------
-- Table Structure for `main.Profile`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `profile` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`age` smallint NOT NULL DEFAULT 0
) ENGINE=InnoDB;
create table `tag`
-- --------------------------------------------------
-- Table Structure for `main.Tag`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `tag` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(255) NOT NULL DEFAULT ''
) ENGINE=InnoDB;
create table `post_tags`
-- --------------------------------------------------
-- Table Structure for `main.PostTags`
-- --------------------------------------------------
CREATE TABLE IF NOT EXISTS `post_tags` (
`id` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY,
`post_id` integer NOT NULL,
`tag_id` integer NOT NULL
) ENGINE=InnoDB;
1 <nil>
1 <nil>
Process finished with exit code 0
浙公网安备 33010602011771号