Golang gorm 结构体定义使用

一、定义一个用户注册的结构体

条件:1、用户名和密码不能为空,用户名长度大于2小于12 密码长度大于6小于12

type UserRegisterForm struct {
	UserName  string `json:"username" form:"username" query:"username" binding:"required,gte=2,lte=12"`
	PassWord  string `json:"password" form:"password" query:"password" binding:"required,gte=6,lte=12"`
	ShareCode string `json:"share_code" form:"share_code" query:"share_code"`
	Phone     string `json:"phone" form:"phone" query:"phone"`
}

二、字段权限控制

GORM 允许您用标签控制字段级别的权限。这样您就可以让一个字段的权限是只读、只写、只创建、只更新或者被忽略

type User struct {
  Name string `gorm:"<-:create"` // 允许读和创建
  Name string `gorm:"<-:update"` // 允许读和更新
  Name string `gorm:"<-"`        // 允许读和写(创建和更新)
  Name string `gorm:"<-:false"`  // 允许读,禁止写
  Name string `gorm:"->"`        // 只读(除非有自定义配置,否则禁止写)
  Name string `gorm:"->;<-:create"` // 允许读和写
  Name string `gorm:"->:false;<-:create"` // 仅创建(禁止从 db 读)
  Name string `gorm:"-"`  // 通过 struct 读写会忽略该字段
}

 创建/更新时间

type User struct {
  CreatedAt time.Time // 在创建时,如果该字段值为零值,则使用当前时间填充
  UpdatedAt int       // 在创建时该字段值为零值或者在更新时,使用当前时间戳秒数填充
  Updated   int64 `gorm:"autoUpdateTime:nano"` // 使用时间戳填纳秒数充更新时间
  Updated   int64 `gorm:"autoUpdateTime:milli"` // 使用时间戳毫秒数填充更新时间
  Created   int64 `gorm:"autoCreateTime"`      // 使用时间戳秒数填充创建时间
}

三、定义表模型

type User struct {
	Name           string    `gorm:"type:varchar(20);unique;not null" json:"user_name"`
	Phone          string    `gorm:"type:varchar(20);unique;not null" json:"phone"`
    Password       string    `gorm:"type:blob" json:"-"`
}

注意点:当不需要返回该字段时可以设置 json:"-"

你可能感兴趣的:(Golang,golang,数据库,java)