如何使用go语言的beego框架的orm

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用go语言的beego框架的orm相关的知识,希望对你有一定的参考价值。

参考技术A 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 := UserId: 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)
则执行结果不会提示。本回答被提问者和网友采纳

以上是关于如何使用go语言的beego框架的orm的主要内容,如果未能解决你的问题,请参考以下文章

beego——模型(model)

GoWeb框架beego关于orm使用问题

beego orm mysql

Beego(简介、配置、路由、日志)

go语言web框架beego安装(go mod方式)

如何使用GoLand调试beego项目