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

  

  

posted on 2019-06-21 15:34  youhui  阅读(297)  评论(0)    收藏  举报