• gorm学习随笔


    简单记录一下gorm中常用方法的用途

    // User 用户模型
    type User struct {
        gorm.Model
        NickName string `gorm:"type:varchar(128)" json:"nickName"` // 昵称
        Phone    string `gorm:"type:varchar(11)" json:"phone"`     // 手机号
        Email    string `gorm:"type:varchar(128)" json:"email"`    //邮箱
    }
    // TableName 指定表名
    func (User) TableName() string {
        return "user"
    }

      创建model时 如果加上gorm.Model 会默认增加id、create_at、updated_at、deleted_at四个字段,其中id默认为自增主键。

    各字段的定义 可以写在struct的tag标签中 

    例如: gorm:"type:char(10);not null;default '';unique" 使用 ; 分隔,默认会采用下划线的方式创建表字段

      

    • gorm连接MySQL
    // xxxx 是连接MySQL需要的参数  想要正确的处理 time.Time,要带上 parseTime,loc是指定时区
    // 格式:用户:密码@tcp(主机:端口)/库名?charset=utf8&parseTime=True&loc=Local
    // db就是数据库的连接了 可以开始愉快的curd了 db, err := gorm.Open("mysql",xxxx)
    defer db.Close()

      使用 db.AutoMigrate(&User{}) 来创建、更新user表结构

      使用 db.SingularTable(true) 可以让gorm创建表时表名不要自动加s变成复数的形式

      

    连表查询比如 select a.*,b.name,c.id 之类的 可以定义一个全新的结构体来接收

    // 连表查询时
    type ArticleCate struct {
      model.Article
      Name string `json:"category_name"`
      Phone string `json:"phone"`
    }
    
    func (this ArticleController) Show(ctx *gin.Context) {
      id := ctx.Param("id")
    
      var art ArticleCate
      notFound := this.db.Table(model.Article{}.TableName()).Select("articles.*,u.phone,ca.name").Joins("left join category ca on ca.id=articles.category_id").
        Joins("left join users u on u.id=articles.user_id").Where("articles.id=?", id).First(&art).RecordNotFound()
      if id == "" || notFound {
        response.Fail(ctx, "文章不存在", nil)
        return
      }
    
      response.Success(ctx, gin.H{"data": art}, "success")
    }
    

      

      待续...

    每天都是不想努力的一天....
  • 相关阅读:
    UVa 531 Compromise
    UVa 10130 SuperSale
    UVa 624 CD
    2015年第一天有感
    Bootstrap3.0学习(一)
    IIS上.net注册
    11g Oracle导出表 默认不导出数据为空的表解决
    Oracle数据库密码重置、导入导出库命令
    每天进步一点--WCF学习笔记
    C#每天进步一点--异步编程模式
  • 原文地址:https://www.cnblogs.com/Theia/p/14974662.html
Copyright © 2020-2023  润新知