Gin使用GORM进行CURD

378 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Gin GORM CURD

1、Field-Level Permission(字段级权限)

使用 GORM 进行 CRUD 时,导出的字段具有所有权限,并且 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"` // 只能创建(不允许从数据库中读取)
  Name string `gorm:"-"`            // 使用结构体的时候忽略此字段
  Name string `gorm:"-:all"`        // 使用结构体 读、写、移动的时候忽略此字段
  Name string `gorm:"-:migration"`  // 使用结构体移动时忽略此字段
}

2、 Tracking(跟踪)

Creating/Updating Time/Unix (Milli/Nano) Seconds 跟踪

GORM 使用CreatedAt,UpdatedAt按照惯例跟踪创建/更新时间, 如果定义了字段,GORM 将在创建/更新时设置当前时间,

要使用具有不同名称的字段,您可以使用 tag 配置这些字段autoCreateTimeautoUpdateTime

type User struct { 
  CreatedAt time.Time //  如果创建时为零,则设置为当前时间,数据类型更改为 int则不会按照日期类型展示。
  UpdatedAt int        // 在更新时设置为当前的 unix 秒数,或者在创建时设置为 0
   Updated    int64  `gorm:"autoUpdateTime:nano"`  / / 使用 unix 纳秒作为更新时间
  Updated    int64  `gorm:"autoUpdateTime:milli"` // 使用 unix 毫秒作为更新时间
  Created    int64  `gorm:"autoCreateTime"`       // 使用 unix 秒作为创建时间
}

3、增加(add)

找到要操作数据库表的控制器,然后引入 models 模块

func (con UserController) Add(c *gin.Context) {
    user := models.User{
    Username: "小明",
    Age: 18,
    Email: "999999@qq.com",
    AddTime: int(time.Now().Unix()),
    }
    result := models.DB.Create(&user) // 通过数据的指针来创建
    
if result.RowsAffected > 1 {
    fmt.Print(user.Id)
}
c.String(http.StatusOK, "增加成功")
}

user.ID             // 返回插入数据的主键
result.Error        // 返回 error
result.RowsAffected // 返回插入记录的条数