go语言之beego框架orm的使用

models.go

============================

package main


import (
    "github.com/astaxie/beego/orm"
)

type User struct {
    Id      int
    Name    string
    Profile *Profile `orm:"rel(one)"` // OneToOne relation
}

type Profile struct {
    Id   int
    Age  int16
    User *User `orm:"reverse(one)"` // 设置反向关系(可选)
}

func init() {
    // 需要在init中注册定义的model

    orm.RegisterModel(new(User), new(Profile))

}

main.go

==============

package main

import (
    "fmt"
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"
)

func init() {
    //orm.RegisterModel(new(User))

    orm.RegisterDataBase("default", "mysql", "ta3:ta3@/ta3?charset=utf8")
    orm.RunSyncdb("default", false, true)  // true 改成false,如果表存在则会给出提示,如果改成false则不会提示 , 这句话没有会报主键不存在的错误
}

func main() {
    o := orm.NewOrm()
    o.Using("default") // 默认使用 default,你可以指定为其他数据库

    user := User{Id: 1}

    err := o.Read(&user)

    if err == orm.ErrNoRows {
        fmt.Println("查询不到")
    } else if err == orm.ErrMissPK {
        fmt.Println("找不到主键")
    } else {
        fmt.Println(user.Id, user.Name)
    }
}

执行结果:

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,
        `profile_id` integer NOT NULL UNIQUE
    ) 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
    ) ENGINE=InnoDB;

查询不到


 第二次再执行:

table `user` already exists, skip
table `profile` already exists, skip
查询不到


如果  orm.RunSyncdb("default", false, true)改成  orm.RunSyncdb("default", false, false)

则执行结果不会提示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值