随笔 - 231  文章 - 205  评论 - 20  阅读 - 41万

gorm使用Save方法处理时间字段的坑

回到顶部

视频地址

Gorm中Save方法处理时间字段的坑

回到顶部

测试代码以及说明

复制代码
package gorm_tests

import (
    "fmt"
    "github.com/stretchr/testify/require"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
    "testing"
    "time"
)

const (
    userTableName = "user"
)

type User struct {
    ID   uint   `gorm:"primaryKey;column:id"`
    Name string `gorm:"column:name"`
    Age  uint8  `gorm:"column:age"`
    // Notice gorm内置自动更新的字段!如果是创建/更新的话会自动将当前时间创建/更新进去
    CreatedAt time.Time `gorm:"column:created_at"`
    UpdatedAt time.Time `gorm:"column:updated_at"`

    // Notice 如果要自定义一个不一样的字段,需要加 default:null
    // Notice 并且在创建数据库的时候 这2个字段要加额外的配置:
    /*
      `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
      `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
    */
    CreateTime time.Time `gorm:"column:create_time;default:null"`
    UpdateTime time.Time `gorm:"column:update_time;default:null"`
}

func (u User) TableName() string {
    return userTableName
}

func TestT1(t *testing.T) {
    dsn := "root:123@tcp(127.0.0.1:3307)/whw?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    require.Equal(t, err, nil)
    fmt.Println("db: ", db)

    user := &User{
        ID: 88, // 如果ID存在则更新,如果ID不存在则创建!
    }
    db = db.Model(&User{})
    db.First(&user)
    user.Name = "天蓬"
    user.Age = 99

    // Notice Save方法
    err = db.Save(&user).Error

    require.Equal(t, err, nil)

}
复制代码

~~~

posted on   江湖乄夜雨  阅读(962)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-07-27 基于DRF的图书增删改查练习
2019-07-27 【转】很实用的编程英语词库,共收录一千五百余条词汇
2018-07-27 Django的模板层简介
2018-07-27 Django的视图层简介
2018-07-27 Django中的路由配置简介
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示