zoukankan      html  css  js  c++  java
  • 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:password@/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
    ", err)
            this.Redirect("/adminlogin.html", 301)
            return
        }
        fmt.Printf("Data: %v
    ", login)
    this.Redirect("/admin.html", 301) return }

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

        // insert
        id, err := o.Insert(&user)
        fmt.Printf("ID: %d, ERR: %v
    ", id, err)
    
        // update
        //user.Name = "astaxie"
        //num, err := o.Update(&user)
        //fmt.Printf("NUM: %d, ERR: %v
    ", num, err)
    
        // read one
        //u := User{Id: user.Id}
        //err = o.Read(&u)
        //fmt.Printf("ERR: %v
    ", err)
    
        // delete
        //num, err = o.Delete(&u)
        //fmt.Printf("NUM: %d, ERR: %v
    ", num, err)

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

  • 相关阅读:
    分治法解决寻找数组中最大最小值的问题
    bootstrap动画进度条
    关于bootstrap中css样式与自己设置的css样式相撞问题
    css引入外部字体
    清除浮动
    四叶玫瑰数
    水仙花数
    nginx 配置文件服务器
    springboot 自定义拦截器 防止恶意请求
    springboot 自定义异常
  • 原文地址:https://www.cnblogs.com/jackylee92/p/6671349.html
Copyright © 2011-2022 走看看