beego orm mysql

beego框架中的rom支持mysql

项目中使用到mvc模式,总结下使用方式;

models中

package models

import (
    //使用beego orm 必备
    "github.com/astaxie/beego/orm"
    //使用的数据库 必备
    _ "github.com/go-sql-driver/mysql" // import your used driver
)

type BlogLogin struct {
    Id            int64
    Name          string
    Pwd           string
    WechatId      string
    WechatInfo    string
    CreateTime    string
    LastLoginIp   string
    LastLoginTime string
}

func RegisterDB() {

    //注册 model
    orm.RegisterModel(new(BlogLogin))
    //注册默认数据库
    orm.RegisterDataBase("default", "mysql", "username:[email protected]/databasename?charset=utf8") //密码为空格式

当model创建了一个type ,在RegisterDB中调用该方法创建表

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

创建表结构案例

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)"`
}

然后main中初始化,创建表

package main

import (
    //调用models中registerDB方法注册
    "blog/models"
    //设置路由,必备
    _ "blog/routers"
    //beego控制器使用必备
    "github.com/astaxie/beego"
    //开启调试默认
    "github.com/astaxie/beego/orm"
)

func init() {
    models.RegisterDB()

}

func main() {
    orm.Debug = true
    beego.Run()
}

接下来在controller中使用

package controllers

import (
    //使用model中的类型BlogLogin
    "blog/models"
    //打印数据库查出来的结果
    "fmt"
    //beego控制器必备
    "github.com/astaxie/beego"
    //使用orm 中的查询方法
    "github.com/astaxie/beego/orm"
)

type AdminLoginController struct {
    beego.Controller
}

func (this *AdminLoginController) Get() {
    this.TplName = "AdminLogin.html"
}

func (this *AdminLoginController) Post() {

    name := this.Input().Get("name")
    pwd := this.Input().Get("pwd")

    o := orm.NewOrm()
    // read one
    login := models.BlogLogin{Name: name, Pwd: pwd}
    //read默认根据主键查询,下面我设置的为跟怒name 和pwd 查询
    err := o.Read(&login, "Name", "Pwd")
    if err != nil {
        fmt.Printf("ERR: %v\n", err)
        this.Redirect("/adminlogin.html", 301)
        return
    }
    fmt.Printf("Data: %v\n", login)
this.Redirect("/admin.html", 301)
    return
}

下面为一些标准的sql使用:

    // insert
    id, err := o.Insert(&user)
    fmt.Printf("ID: %d, ERR: %v\n", id, err)

    // update
    //user.Name = "astaxie"
    //num, err := o.Update(&user)
    //fmt.Printf("NUM: %d, ERR: %v\n", num, err)

    // read one
    //u := User{Id: user.Id}
    //err = o.Read(&u)
    //fmt.Printf("ERR: %v\n", err)

    // delete
    //num, err = o.Delete(&u)
    //fmt.Printf("NUM: %d, ERR: %v\n", num, err)

详情来自官网:https://beego.me/docs/mvc/model/orm.md

时间: 2024-12-22 06:34:43

beego orm mysql的相关文章

beego——ORM使用方法

先来看一个简单示例: models.gp package main import ( "github.com/astaxie/beego/orm" ) type User struct { Id int Name string Profile *Profile `orm:"rel(one)"` // OneToOne relation Post []*Post `orm:"reverse(many)"` // 设置一对多的反向关系 } type

beego orm自动建表时字段default值不设置的解决办法

在使用beego的orm建表时,我的模型是这样建立的 type Test struct { Id int64 Name string Sex int64 `orm:"default(1)"` Age int64 Content string `orm:"default('')"` } content字段设置默认为空,Sex字段设置默认为1,那么生成的表确并没有default,这不科学,于是我翻了下源码,发现设置default的这段被注释了,位置在 github.co

beego orm 多对多插入和查询操作

// User 用户表 type User struct { ID int UserName string Password string Articles []*Article `orm:"rel(m2m)"` } // Article 文章表 type Article struct { ID int `orm:"pk;auto"` Artiname string `orm:"size(60)"` Atime time.Time `orm:&q

Dapper EF 等orm Mysql不支持事务解决办法

MySQL表类型MyISAM和InnoDB区别 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键.如果事物回滚将造成不完全回滚,不具有原子性.如果执行大量的SELECT,MyISAM是更好的选择.

beego orm 一对多、多对多 关联查询

一对多 model ype User struct {Id int64 json:"id"Name string json:"name,omitempty" orm:"size(50)"Passwords string json:"passwords" orm:"size(32)"Baby []Baby json:"baby" orm:"reverse(many)"}

beego 使用orm链接以及创建mysql数据库

1.0 这方面的资料在网站上确实很少 2.0 在用bee工具创建一个go项目后,接下来我们有2件事要做了,当然之前一只觉得GO的IDE实在不知道选着那个,因为在Mac电脑上开发,又不支持文件创建所以有点麻烦 最终还是确定用sublime来开发.sublime本身集合了命令行插件这样开发起来就不用在几个命令行窗口跳转 3.0 安装好sublime后用快捷键进入sublime pagecontrol  或按shift+command+p 打开 输入GOSUBLIME:rungocommand  这样

beego框架之orm模块——PostgreSQL

beego框架默认支持三种数据库类型(MySQL,Sqlite,PostgreSQL).这三种数据库的配置虽然大同小异,但也有各自的差别.如今该总结下了. 以下是基于beego框架对PostgreSQL数据库进行操作. models/models.go 1 package models 2 3 import ( 4 "github.com/astaxie/beego/orm" 5 ) 6 7 type Student struct { 8 Id int64 9 Name string

beego框架之orm模块

参考beego原文:http://beego.me/docs/mvc/model/orm.md#main.go beego ORM 是一个强大的 Go 语言 ORM 框架,orm模块主要是处理MVC中的M(models). 首先以bee工具创建一工程名为:beegoorm,修改的文件为 beegoorm/main.go 和 beegoorm/models/models.go(仅2个文件) beegoorm/models/models.go package models import ( "git

beego 初体验 - ORM

goland Terminal运行命令: go get github.com/astaxie/beego/orm 安装go mysql驱动: go get github.com/go-sql-driver/mysql 添加实体模型,配置orm启动方法,运行bee run名称生成数据库架构: 连接字符串自行设置,另外需要在main.go文件添加orm启动包: 至此,orm配置完毕,数据库表创建完毕. 原文地址:https://www.cnblogs.com/Eysa/p/10394810.html